Home | History | Annotate | Download | only in resources
      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.
      4 
      5 #ifndef CC_RESOURCES_PRIORITY_CALCULATOR_H_
      6 #define CC_RESOURCES_PRIORITY_CALCULATOR_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "cc/base/cc_export.h"
     10 
     11 namespace gfx { class Rect; }
     12 
     13 namespace cc {
     14 
     15 class CC_EXPORT PriorityCalculator {
     16  public:
     17   PriorityCalculator() {}
     18 
     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(gfx::Rect visible_rect,
     24                                   gfx::Rect texture_rect,
     25                                   bool draws_to_root_surface);
     26   static int SmallAnimatedLayerMinPriority();
     27 
     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;
     34   }
     35 
     36   static int AllowNothingCutoff();
     37   static int AllowVisibleOnlyCutoff();
     38   static int AllowVisibleAndNearbyCutoff();
     39   static int AllowEverythingCutoff();
     40 
     41  private:
     42   DISALLOW_COPY_AND_ASSIGN(PriorityCalculator);
     43 };
     44 
     45 }  // namespace cc
     46 
     47 #endif  // CC_RESOURCES_PRIORITY_CALCULATOR_H_
     48