Home | History | Annotate | Download | only in gl
      1 /*
      2  * Copyright 2012 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 GrGLPath_DEFINED
      9 #define GrGLPath_DEFINED
     10 
     11 #include "../GrPath.h"
     12 #include "gl/GrGLTypes.h"
     13 
     14 class GrGLGpu;
     15 class GrStyle;
     16 
     17 /**
     18  * Currently this represents a path built using GL_NV_path_rendering. If we
     19  * support other GL path extensions then this would have to have a type enum
     20  * and/or be subclassed.
     21  */
     22 
     23 class GrGLPath : public GrPath {
     24 public:
     25     static bool InitPathObjectPathDataCheckingDegenerates(GrGLGpu*,
     26                                                           GrGLuint pathID,
     27                                                           const SkPath&);
     28     static void InitPathObjectPathData(GrGLGpu*,
     29                                        GrGLuint pathID,
     30                                        const SkPath&);
     31     static void InitPathObjectStroke(GrGLGpu*, GrGLuint pathID, const SkStrokeRec&);
     32 
     33     static void InitPathObjectEmptyPath(GrGLGpu*, GrGLuint pathID);
     34 
     35 
     36     GrGLPath(GrGLGpu*, const SkPath&, const GrStyle&);
     37     GrGLuint pathID() const { return fPathID; }
     38 
     39     bool shouldStroke() const { return fShouldStroke; }
     40     bool shouldFill() const { return fShouldFill; }
     41 protected:
     42     void onRelease() override;
     43     void onAbandon() override;
     44 
     45 private:
     46     // TODO: Figure out how to get an approximate size of the path in Gpu memory.
     47     size_t onGpuMemorySize() const override { return 100; }
     48 
     49     GrGLuint fPathID;
     50     bool fShouldStroke;
     51     bool fShouldFill;
     52 
     53     typedef GrPath INHERITED;
     54 };
     55 
     56 #endif
     57