void InspectorLayerTreeAgent::compositingReasons(ErrorString* errorString, const String& layerId, RefPtr<TypeBuilder::Array<String> >& reasonStrings)
{
    static CompositingReasonToProtocolName compositingReasonNames[] = {
        { CompositingReason3DTransform, "transform3D" },
        { CompositingReasonVideo, "video" },
        { CompositingReasonCanvas, "canvas" },
        { CompositingReasonPlugin, "plugin" },
        { CompositingReasonIFrame, "iFrame" },
        { CompositingReasonBackfaceVisibilityHidden, "backfaceVisibilityHidden" },
        { CompositingReasonAnimation, "animation" },
        { CompositingReasonFilters, "filters" },
        { CompositingReasonPositionFixed, "positionFixed" },
        { CompositingReasonPositionSticky, "positionSticky" },
        { CompositingReasonOverflowScrollingTouch, "overflowScrollingTouch" },
        { CompositingReasonAssumedOverlap, "assumedOverlap" },
        { CompositingReasonOverlap, "overlap" },
        { CompositingReasonNegativeZIndexChildren, "negativeZIndexChildren" },
        { CompositingReasonTransformWithCompositedDescendants, "transformWithCompositedDescendants" },
        { CompositingReasonOpacityWithCompositedDescendants, "opacityWithCompositedDescendants" },
        { CompositingReasonMaskWithCompositedDescendants, "maskWithCompositedDescendants" },
        { CompositingReasonReflectionWithCompositedDescendants, "reflectionWithCompositedDescendants" },
        { CompositingReasonFilterWithCompositedDescendants, "filterWithCompositedDescendants" },
        { CompositingReasonBlendingWithCompositedDescendants, "blendingWithCompositedDescendants" },
        { CompositingReasonClipsCompositingDescendants, "clipsCompositingDescendants" },
        { CompositingReasonPerspective, "perspective" },
        { CompositingReasonPreserve3D, "preserve3D" },
        { CompositingReasonRoot, "root" },
        { CompositingReasonLayerForClip, "layerForClip" },
        { CompositingReasonLayerForScrollbar, "layerForScrollbar" },
        { CompositingReasonLayerForScrollingContainer, "layerForScrollingContainer" },
        { CompositingReasonLayerForForeground, "layerForForeground" },
        { CompositingReasonLayerForBackground, "layerForBackground" },
        { CompositingReasonLayerForMask, "layerForMask" },
        { CompositingReasonLayerForVideoOverlay, "layerForVideoOverlay" }
    };

    const GraphicsLayer* graphicsLayer = layerById(errorString, layerId);
    if (!graphicsLayer)
        return;
    WebKit::WebCompositingReasons reasonsBitmask = graphicsLayer->compositingReasons();
    reasonStrings = TypeBuilder::Array<String>::create();
    for (size_t i = 0; i < WTF_ARRAY_LENGTH(compositingReasonNames); ++i) {
        if (!(reasonsBitmask & compositingReasonNames[i].mask))
            continue;
        reasonStrings->addItem(compositingReasonNames[i].protocolName);
#ifndef _NDEBUG
        reasonsBitmask &= ~compositingReasonNames[i].mask;
#endif
    }
    ASSERT(!reasonsBitmask);
}
Ejemplo n.º 2
0
void InspectorLayerTreeAgent::makeSnapshot(ErrorString* errorString, const String& layerId, String* snapshotId)
{
    GraphicsLayer* layer = layerById(errorString, layerId);
    if (!layer)
        return;

    GraphicsContextRecorder recorder;
    IntSize size = expandedIntSize(layer->size());
    GraphicsContext* context = recorder.record(size, layer->contentsOpaque());
    layer->paint(*context, IntRect(IntPoint(0, 0), size));
    RefPtr<GraphicsContextSnapshot> snapshot = recorder.stop();
    *snapshotId = String::number(++s_lastSnapshotId);
    bool newEntry = m_snapshotById.add(*snapshotId, snapshot).isNewEntry;
    ASSERT_UNUSED(newEntry, newEntry);
}
Ejemplo n.º 3
0
void InspectorLayerTreeAgent::compositingReasons(ErrorString* errorString, const String& layerId, RefPtr<TypeBuilder::Array<String> >& reasonStrings)
{
    const GraphicsLayer* graphicsLayer = layerById(errorString, layerId);
    if (!graphicsLayer)
        return;
    CompositingReasons reasonsBitmask = graphicsLayer->compositingReasons();
    reasonStrings = TypeBuilder::Array<String>::create();
    for (size_t i = 0; i < kNumberOfCompositingReasons; ++i) {
        if (!(reasonsBitmask & kCompositingReasonStringMap[i].reason))
            continue;
        reasonStrings->addItem(kCompositingReasonStringMap[i].shortName);
#ifndef _NDEBUG
        reasonsBitmask &= ~kCompositingReasonStringMap[i].reason;
#endif
    }
    ASSERT(!reasonsBitmask);
}
void InspectorLayerTreeAgent::makeSnapshot(ErrorString* errorString, const String& layerId, String* snapshotId)
{
    GraphicsLayer* layer = layerById(errorString, layerId);
    if (!layer)
        return;

    IntSize size = expandedIntSize(layer->size());

    SkPictureBuilder pictureBuilder(FloatRect(0, 0, size.width(), size.height()));
    layer->paint(pictureBuilder.context(), IntRect(IntPoint(0, 0), size));

    RefPtr<PictureSnapshot> snapshot = adoptRef(new PictureSnapshot(pictureBuilder.endRecording()));

    *snapshotId = String::number(++s_lastSnapshotId);
    bool newEntry = m_snapshotById.add(*snapshotId, snapshot).isNewEntry;
    ASSERT_UNUSED(newEntry, newEntry);
}
Ejemplo n.º 5
0
void InspectorLayerTreeAgent::makeSnapshot(ErrorString* errorString, const String& layerId, String* snapshotId)
{
    GraphicsLayer* layer = layerById(errorString, layerId);
    if (!layer)
        return;

    IntSize size = expandedIntSize(layer->size());

    GraphicsContext context(*layer->paintController());
    IntRect interestRect(IntPoint(0, 0), size);
    layer->paint(context, &interestRect);
    layer->paintController()->commitNewDisplayItems();

    context.beginRecording(interestRect);
    layer->paintController()->paintArtifact().replay(context);
    RefPtr<PictureSnapshot> snapshot = adoptRef(new PictureSnapshot(context.endRecording()));

    *snapshotId = String::number(++s_lastSnapshotId);
    bool newEntry = m_snapshotById.add(*snapshotId, snapshot).isNewEntry;
    ASSERT_UNUSED(newEntry, newEntry);
}
Ejemplo n.º 6
0
WDLayerHierarchy *WDLayerHierarchy::extractSubHierarchy(const std::string &idLayer)
{
    return extractSubHierarchy(layerById(idLayer));
}