• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2009 The Android Open Source Project
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 
9 
10 #include "SkImageEncoder.h"
11 #include "SkTRegistry.h"
12 
13 typedef SkTRegistry<SkImageEncoder*, SkImageEncoder::Type> EncodeReg;
14 
15 // Can't use the typedef here because of complex C++ corner cases
16 template EncodeReg* SkTRegistry<SkImageEncoder*, SkImageEncoder::Type>::gHead;
17 
18 #ifdef SK_ENABLE_LIBPNG
19     extern SkImageEncoder* sk_libpng_efactory(SkImageEncoder::Type);
20 #endif
21 
Create(Type t)22 SkImageEncoder* SkImageEncoder::Create(Type t) {
23     SkImageEncoder* codec = NULL;
24     const EncodeReg* curr = EncodeReg::Head();
25     while (curr) {
26         if ((codec = curr->factory()(t)) != NULL) {
27             return codec;
28         }
29         curr = curr->next();
30     }
31 #ifdef SK_ENABLE_LIBPNG
32     if ((codec = sk_libpng_efactory(t)) != NULL) {
33         return codec;
34     }
35 #endif
36     return NULL;
37 }
38