Home | History | Annotate | Download | only in thumbnails
      1 // Copyright (c) 2013 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 CHROME_BROWSER_THUMBNAILS_THUMBNAILING_CONTEXT_H_
      6 #define CHROME_BROWSER_THUMBNAILS_THUMBNAILING_CONTEXT_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/memory/ref_counted.h"
     10 #include "chrome/browser/thumbnails/thumbnail_service.h"
     11 #include "chrome/common/thumbnail_score.h"
     12 #include "content/public/browser/web_contents.h"
     13 #include "ui/gfx/size.h"
     14 
     15 namespace thumbnails {
     16 
     17 // The result of clipping. This can be used to determine if the
     18 // generated thumbnail is good or not.
     19 enum ClipResult {
     20   // Clipping is not done yet.
     21   CLIP_RESULT_UNPROCESSED,
     22   // The source image is smaller.
     23   CLIP_RESULT_SOURCE_IS_SMALLER,
     24   // Wider than tall by twice or more, clip horizontally.
     25   CLIP_RESULT_MUCH_WIDER_THAN_TALL,
     26   // Wider than tall, clip horizontally.
     27   CLIP_RESULT_WIDER_THAN_TALL,
     28   // Taller than wide, clip vertically.
     29   CLIP_RESULT_TALLER_THAN_WIDE,
     30   // The source and destination aspect ratios are identical.
     31   CLIP_RESULT_NOT_CLIPPED,
     32   // The source and destination are identical.
     33   CLIP_RESULT_SOURCE_SAME_AS_TARGET,
     34 };
     35 
     36 // Holds the information needed for processing a thumbnail.
     37 struct ThumbnailingContext : base::RefCountedThreadSafe<ThumbnailingContext> {
     38   ThumbnailingContext(content::WebContents* web_contents,
     39                       ThumbnailService* receiving_service,
     40                       bool load_interrupted);
     41 
     42   // Create an instance for use with unit tests.
     43   static ThumbnailingContext* CreateThumbnailingContextForTest() {
     44     return new ThumbnailingContext();
     45   }
     46 
     47   scoped_refptr<ThumbnailService> service;
     48   GURL url;
     49   ClipResult clip_result;
     50   gfx::Size requested_copy_size;
     51   ThumbnailScore score;
     52 
     53  private:
     54   ThumbnailingContext();
     55   ~ThumbnailingContext();
     56 
     57   friend class base::RefCountedThreadSafe<ThumbnailingContext>;
     58 };
     59 
     60 }
     61 
     62 #endif  // CHROME_BROWSER_THUMBNAILS_THUMBNAILING_CONTEXT_H_
     63