OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 17 matching lines...) Expand all Loading... |
28 #include "core/platform/graphics/GraphicsLayer.h" | 28 #include "core/platform/graphics/GraphicsLayer.h" |
29 | 29 |
30 #include "SkImageFilter.h" | 30 #include "SkImageFilter.h" |
31 #include "SkMatrix44.h" | 31 #include "SkMatrix44.h" |
32 #include "core/platform/ScrollableArea.h" | 32 #include "core/platform/ScrollableArea.h" |
33 #include "core/platform/graphics/FloatPoint.h" | 33 #include "core/platform/graphics/FloatPoint.h" |
34 #include "core/platform/graphics/FloatRect.h" | 34 #include "core/platform/graphics/FloatRect.h" |
35 #include "core/platform/graphics/GraphicsContext.h" | 35 #include "core/platform/graphics/GraphicsContext.h" |
36 #include "core/platform/graphics/GraphicsLayerFactory.h" | 36 #include "core/platform/graphics/GraphicsLayerFactory.h" |
37 #include "core/platform/graphics/LayoutRect.h" | 37 #include "core/platform/graphics/LayoutRect.h" |
38 #include "core/platform/graphics/chromium/AnimationTranslationUtil.h" | |
39 #include "core/platform/graphics/chromium/TransformSkMatrix44Conversions.h" | 38 #include "core/platform/graphics/chromium/TransformSkMatrix44Conversions.h" |
40 #include "core/platform/graphics/filters/SkiaImageFilterBuilder.h" | 39 #include "core/platform/graphics/filters/SkiaImageFilterBuilder.h" |
41 #include "core/platform/graphics/skia/NativeImageSkia.h" | 40 #include "core/platform/graphics/skia/NativeImageSkia.h" |
42 #include "core/platform/text/TextStream.h" | 41 #include "core/platform/text/TextStream.h" |
43 | 42 |
44 #include "wtf/CurrentTime.h" | 43 #include "wtf/CurrentTime.h" |
45 #include "wtf/HashMap.h" | 44 #include "wtf/HashMap.h" |
46 #include "wtf/HashSet.h" | 45 #include "wtf/HashSet.h" |
47 #include "wtf/text/CString.h" | |
48 #include "wtf/text/StringBuilder.h" | |
49 #include "wtf/text/StringHash.h" | |
50 #include "wtf/text/WTFString.h" | 46 #include "wtf/text/WTFString.h" |
51 | 47 |
52 #include "public/platform/Platform.h" | 48 #include "public/platform/Platform.h" |
53 #include "public/platform/WebAnimation.h" | 49 #include "public/platform/WebAnimation.h" |
54 #include "public/platform/WebCompositorSupport.h" | 50 #include "public/platform/WebCompositorSupport.h" |
55 #include "public/platform/WebFilterOperations.h" | 51 #include "public/platform/WebFilterOperations.h" |
56 #include "public/platform/WebFloatPoint.h" | 52 #include "public/platform/WebFloatPoint.h" |
57 #include "public/platform/WebFloatRect.h" | 53 #include "public/platform/WebFloatRect.h" |
58 #include "public/platform/WebLayer.h" | 54 #include "public/platform/WebLayer.h" |
59 #include "public/platform/WebPoint.h" | 55 #include "public/platform/WebPoint.h" |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 } | 332 } |
337 | 333 |
338 void GraphicsLayer::paintGraphicsLayerContents(GraphicsContext& context, const I
ntRect& clip) | 334 void GraphicsLayer::paintGraphicsLayerContents(GraphicsContext& context, const I
ntRect& clip) |
339 { | 335 { |
340 if (!m_client) | 336 if (!m_client) |
341 return; | 337 return; |
342 incrementPaintCount(); | 338 incrementPaintCount(); |
343 m_client->paintContents(this, context, m_paintingPhase, clip); | 339 m_client->paintContents(this, context, m_paintingPhase, clip); |
344 } | 340 } |
345 | 341 |
346 String GraphicsLayer::animationNameForTransition(AnimatedPropertyID property) | |
347 { | |
348 // | is not a valid identifier character in CSS, so this can never conflict
with a keyframe identifier. | |
349 StringBuilder id; | |
350 id.appendLiteral("-|transition"); | |
351 id.appendNumber(static_cast<int>(property)); | |
352 id.append('-'); | |
353 return id.toString(); | |
354 } | |
355 | |
356 void GraphicsLayer::setZPosition(float position) | 342 void GraphicsLayer::setZPosition(float position) |
357 { | 343 { |
358 m_zPosition = position; | 344 m_zPosition = position; |
359 } | 345 } |
360 | 346 |
361 float GraphicsLayer::accumulatedOpacity() const | 347 float GraphicsLayer::accumulatedOpacity() const |
362 { | 348 { |
363 if (!preserves3D()) | 349 if (!preserves3D()) |
364 return 1; | 350 return 1; |
365 | 351 |
(...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
970 void GraphicsLayer::setContentsToCanvas(WebLayer* layer) | 956 void GraphicsLayer::setContentsToCanvas(WebLayer* layer) |
971 { | 957 { |
972 setContentsTo(ContentsLayerForCanvas, layer); | 958 setContentsTo(ContentsLayerForCanvas, layer); |
973 } | 959 } |
974 | 960 |
975 void GraphicsLayer::setContentsToMedia(WebLayer* layer) | 961 void GraphicsLayer::setContentsToMedia(WebLayer* layer) |
976 { | 962 { |
977 setContentsTo(ContentsLayerForVideo, layer); | 963 setContentsTo(ContentsLayerForVideo, layer); |
978 } | 964 } |
979 | 965 |
980 bool GraphicsLayer::addAnimation(const KeyframeValueList& values, const IntSize&
boxSize, const CSSAnimationData* animation, const String& animationName, double
timeOffset) | 966 bool GraphicsLayer::addAnimation(WebAnimation* animation) |
981 { | 967 { |
| 968 ASSERT(animation); |
982 platformLayer()->setAnimationDelegate(this); | 969 platformLayer()->setAnimationDelegate(this); |
983 | 970 |
984 int animationId = 0; | 971 // Remove any existing animations with the same animation id and target prop
erty. |
985 | 972 platformLayer()->removeAnimation(animation->id(), animation->targetProperty(
)); |
986 if (m_animationIdMap.contains(animationName)) | 973 return platformLayer()->addAnimation(animation); |
987 animationId = m_animationIdMap.get(animationName); | |
988 | |
989 OwnPtr<WebAnimation> toAdd(createWebAnimation(values, animation, animationId
, timeOffset, boxSize)); | |
990 | |
991 if (toAdd) { | |
992 animationId = toAdd->id(); | |
993 m_animationIdMap.set(animationName, animationId); | |
994 | |
995 // Remove any existing animations with the same animation id and target
property. | |
996 platformLayer()->removeAnimation(animationId, toAdd->targetProperty()); | |
997 return platformLayer()->addAnimation(toAdd.get()); | |
998 } | |
999 | |
1000 return false; | |
1001 } | 974 } |
1002 | 975 |
1003 void GraphicsLayer::pauseAnimation(const String& animationName, double timeOffse
t) | 976 void GraphicsLayer::pauseAnimation(int animationId, double timeOffset) |
1004 { | 977 { |
1005 if (m_animationIdMap.contains(animationName)) | 978 platformLayer()->pauseAnimation(animationId, timeOffset); |
1006 platformLayer()->pauseAnimation(m_animationIdMap.get(animationName), tim
eOffset); | |
1007 } | 979 } |
1008 | 980 |
1009 void GraphicsLayer::removeAnimation(const String& animationName) | 981 void GraphicsLayer::removeAnimation(int animationId) |
1010 { | 982 { |
1011 if (m_animationIdMap.contains(animationName)) | 983 platformLayer()->removeAnimation(animationId); |
1012 platformLayer()->removeAnimation(m_animationIdMap.get(animationName)); | |
1013 } | 984 } |
1014 | 985 |
1015 void GraphicsLayer::suspendAnimations(double wallClockTime) | 986 void GraphicsLayer::suspendAnimations(double wallClockTime) |
1016 { | 987 { |
1017 // |wallClockTime| is in the wrong time base. Need to convert here. | 988 // |wallClockTime| is in the wrong time base. Need to convert here. |
1018 // FIXME: find a more reliable way to do this. | 989 // FIXME: find a more reliable way to do this. |
1019 double monotonicTime = wallClockTime + monotonicallyIncreasingTime() - curre
ntTime(); | 990 double monotonicTime = wallClockTime + monotonicallyIncreasingTime() - curre
ntTime(); |
1020 platformLayer()->suspendAnimations(monotonicTime); | 991 platformLayer()->suspendAnimations(monotonicTime); |
1021 } | 992 } |
1022 | 993 |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1199 #ifndef NDEBUG | 1170 #ifndef NDEBUG |
1200 void showGraphicsLayerTree(const WebCore::GraphicsLayer* layer) | 1171 void showGraphicsLayerTree(const WebCore::GraphicsLayer* layer) |
1201 { | 1172 { |
1202 if (!layer) | 1173 if (!layer) |
1203 return; | 1174 return; |
1204 | 1175 |
1205 String output = layer->layerTreeAsText(WebCore::LayerTreeIncludesDebugInfo); | 1176 String output = layer->layerTreeAsText(WebCore::LayerTreeIncludesDebugInfo); |
1206 fprintf(stderr, "%s\n", output.utf8().data()); | 1177 fprintf(stderr, "%s\n", output.utf8().data()); |
1207 } | 1178 } |
1208 #endif | 1179 #endif |
OLD | NEW |