1 // Copyright 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CC_RESOURCES_PRIORITY_CALCULATOR_H_
6 #define CC_RESOURCES_PRIORITY_CALCULATOR_H_
8 #include "base/basictypes.h"
9 #include "cc/base/cc_export.h"
11 namespace gfx
{ class Rect
; }
15 class CC_EXPORT PriorityCalculator
{
17 PriorityCalculator() {}
19 static int UIPriority(bool draws_to_root_surface
);
20 static int VisiblePriority(bool draws_to_root_surface
);
21 static int RenderSurfacePriority();
22 static int LingeringPriority(int previous_priority
);
23 static int PriorityFromDistance(const gfx::Rect
& visible_rect
,
24 const gfx::Rect
& texture_rect
,
25 bool draws_to_root_surface
);
26 static int SmallAnimatedLayerMinPriority();
28 static int HighestPriority();
29 static int LowestPriority();
30 static inline bool priority_is_lower(int a
, int b
) { return a
> b
; }
31 static inline bool priority_is_higher(int a
, int b
) { return a
< b
; }
32 static inline int max_priority(int a
, int b
) {
33 return priority_is_higher(a
, b
) ? a
: b
;
36 static int AllowNothingCutoff();
37 static int AllowVisibleOnlyCutoff();
38 static int AllowVisibleAndNearbyCutoff();
39 static int AllowEverythingCutoff();
42 DISALLOW_COPY_AND_ASSIGN(PriorityCalculator
);
47 #endif // CC_RESOURCES_PRIORITY_CALCULATOR_H_