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 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 } | 330 } |
335 | 331 |
336 void GraphicsLayer::paintGraphicsLayerContents(GraphicsContext& context, const I
ntRect& clip) | 332 void GraphicsLayer::paintGraphicsLayerContents(GraphicsContext& context, const I
ntRect& clip) |
337 { | 333 { |
338 if (!m_client) | 334 if (!m_client) |
339 return; | 335 return; |
340 incrementPaintCount(); | 336 incrementPaintCount(); |
341 m_client->paintContents(this, context, m_paintingPhase, clip); | 337 m_client->paintContents(this, context, m_paintingPhase, clip); |
342 } | 338 } |
343 | 339 |
344 String GraphicsLayer::animationNameForTransition(AnimatedPropertyID property) | |
345 { | |
346 // | is not a valid identifier character in CSS, so this can never conflict
with a keyframe identifier. | |
347 StringBuilder id; | |
348 id.appendLiteral("-|transition"); | |
349 id.appendNumber(static_cast<int>(property)); | |
350 id.append('-'); | |
351 return id.toString(); | |
352 } | |
353 | |
354 void GraphicsLayer::setZPosition(float position) | 340 void GraphicsLayer::setZPosition(float position) |
355 { | 341 { |
356 m_zPosition = position; | 342 m_zPosition = position; |
357 } | 343 } |
358 | 344 |
359 float GraphicsLayer::accumulatedOpacity() const | 345 float GraphicsLayer::accumulatedOpacity() const |
360 { | 346 { |
361 if (!preserves3D()) | 347 if (!preserves3D()) |
362 return 1; | 348 return 1; |
363 | 349 |
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
976 void GraphicsLayer::setContentsToCanvas(WebLayer* layer) | 962 void GraphicsLayer::setContentsToCanvas(WebLayer* layer) |
977 { | 963 { |
978 setContentsTo(ContentsLayerForCanvas, layer); | 964 setContentsTo(ContentsLayerForCanvas, layer); |
979 } | 965 } |
980 | 966 |
981 void GraphicsLayer::setContentsToMedia(WebLayer* layer) | 967 void GraphicsLayer::setContentsToMedia(WebLayer* layer) |
982 { | 968 { |
983 setContentsTo(ContentsLayerForVideo, layer); | 969 setContentsTo(ContentsLayerForVideo, layer); |
984 } | 970 } |
985 | 971 |
986 bool GraphicsLayer::addAnimation(const KeyframeValueList& values, const IntSize&
boxSize, const CSSAnimationData* animation, const String& animationName, double
timeOffset) | 972 bool GraphicsLayer::addAnimation(WebAnimation* animation) |
987 { | 973 { |
| 974 ASSERT(animation); |
988 platformLayer()->setAnimationDelegate(this); | 975 platformLayer()->setAnimationDelegate(this); |
989 | 976 |
990 int animationId = 0; | 977 // Remove any existing animations with the same animation id and target prop
erty. |
991 | 978 platformLayer()->removeAnimation(animation->id(), animation->targetProperty(
)); |
992 if (m_animationIdMap.contains(animationName)) | 979 return platformLayer()->addAnimation(animation); |
993 animationId = m_animationIdMap.get(animationName); | |
994 | |
995 OwnPtr<WebAnimation> toAdd(createWebAnimation(values, animation, animationId
, timeOffset, boxSize)); | |
996 | |
997 if (toAdd) { | |
998 animationId = toAdd->id(); | |
999 m_animationIdMap.set(animationName, animationId); | |
1000 | |
1001 // Remove any existing animations with the same animation id and target
property. | |
1002 platformLayer()->removeAnimation(animationId, toAdd->targetProperty()); | |
1003 return platformLayer()->addAnimation(toAdd.get()); | |
1004 } | |
1005 | |
1006 return false; | |
1007 } | 980 } |
1008 | 981 |
1009 void GraphicsLayer::pauseAnimation(const String& animationName, double timeOffse
t) | 982 void GraphicsLayer::pauseAnimation(int animationId, double timeOffset) |
1010 { | 983 { |
1011 if (m_animationIdMap.contains(animationName)) | 984 platformLayer()->pauseAnimation(animationId, timeOffset); |
1012 platformLayer()->pauseAnimation(m_animationIdMap.get(animationName), tim
eOffset); | |
1013 } | 985 } |
1014 | 986 |
1015 void GraphicsLayer::removeAnimation(const String& animationName) | 987 void GraphicsLayer::removeAnimation(int animationId) |
1016 { | 988 { |
1017 if (m_animationIdMap.contains(animationName)) | 989 platformLayer()->removeAnimation(animationId); |
1018 platformLayer()->removeAnimation(m_animationIdMap.get(animationName)); | |
1019 } | 990 } |
1020 | 991 |
1021 void GraphicsLayer::suspendAnimations(double wallClockTime) | 992 void GraphicsLayer::suspendAnimations(double wallClockTime) |
1022 { | 993 { |
1023 // |wallClockTime| is in the wrong time base. Need to convert here. | 994 // |wallClockTime| is in the wrong time base. Need to convert here. |
1024 // FIXME: find a more reliable way to do this. | 995 // FIXME: find a more reliable way to do this. |
1025 double monotonicTime = wallClockTime + monotonicallyIncreasingTime() - curre
ntTime(); | 996 double monotonicTime = wallClockTime + monotonicallyIncreasingTime() - curre
ntTime(); |
1026 platformLayer()->suspendAnimations(monotonicTime); | 997 platformLayer()->suspendAnimations(monotonicTime); |
1027 } | 998 } |
1028 | 999 |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1211 #ifndef NDEBUG | 1182 #ifndef NDEBUG |
1212 void showGraphicsLayerTree(const WebCore::GraphicsLayer* layer) | 1183 void showGraphicsLayerTree(const WebCore::GraphicsLayer* layer) |
1213 { | 1184 { |
1214 if (!layer) | 1185 if (!layer) |
1215 return; | 1186 return; |
1216 | 1187 |
1217 String output = layer->layerTreeAsText(WebCore::LayerTreeIncludesDebugInfo); | 1188 String output = layer->layerTreeAsText(WebCore::LayerTreeIncludesDebugInfo); |
1218 fprintf(stderr, "%s\n", output.utf8().data()); | 1189 fprintf(stderr, "%s\n", output.utf8().data()); |
1219 } | 1190 } |
1220 #endif | 1191 #endif |
OLD | NEW |