Home | History | Annotate | Download | only in dm
      1 /*
      2  * Copyright 2015 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef DMSrcSinkAndroid_DEFINED
      9 #define DMSrcSinkAndroid_DEFINED
     10 
     11 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
     12 
     13 #include "DMSrcSink.h"
     14 
     15 namespace DM {
     16 
     17 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
     18 
     19 // Draws to the Android Framework's HWUI API.
     20 
     21 class HWUISink : public Sink {
     22 public:
     23     HWUISink() { }
     24 
     25     Error draw(const Src&, SkBitmap*, SkWStream*, SkString*) const override;
     26     bool serial() const override { return true; }
     27     const char* fileExtension() const override { return "png"; }
     28     SinkFlags flags() const override { return SinkFlags{ SinkFlags::kGPU, SinkFlags::kDirect }; }
     29 };
     30 
     31 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
     32 
     33 // Trims draw commands to only include those supported by the Android Framework's HWUI API.
     34 
     35 class ViaAndroidSDK : public Sink {
     36 public:
     37     explicit ViaAndroidSDK(Sink*);
     38 
     39     Error draw(const Src&, SkBitmap*, SkWStream*, SkString*) const override;
     40     bool serial() const override { return fSink->serial(); }
     41     const char* fileExtension() const override { return fSink->fileExtension(); }
     42     SinkFlags flags() const override {
     43         SinkFlags flags = fSink->flags();
     44         flags.approach = SinkFlags::kIndirect;
     45         return flags;
     46     }
     47 
     48 private:
     49     SkAutoTDelete<Sink> fSink;
     50 };
     51 
     52 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
     53 
     54 }  // namespace DM
     55 
     56 #endif  // SK_BUILD_FOR_ANDROID_FRAMEWORK
     57 
     58 #endif  // DMSrcSinkAndroid_DEFINED
     59