Home | History | Annotate | Download | only in gl
      1 
      2 /*
      3  * Copyright 2014 Google Inc.
      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 #ifndef GrGLPathRange_DEFINED
     10 #define GrGLPathRange_DEFINED
     11 
     12 #include "../GrPathRange.h"
     13 #include "GrStrokeInfo.h"
     14 #include "gl/GrGLTypes.h"
     15 
     16 class GrGLGpu;
     17 
     18 /**
     19  * Currently this represents a range of GL_NV_path_rendering Path IDs. If we
     20  * support other GL path extensions then this would have to have a type enum
     21  * and/or be subclassed.
     22  */
     23 
     24 class GrGLPathRange : public GrPathRange {
     25 public:
     26     /**
     27      * Initialize a GL path range from a PathGenerator. This class will allocate
     28      * the GPU path objects and initialize them lazily.
     29      */
     30     GrGLPathRange(GrGLGpu*, PathGenerator*, const GrStrokeInfo&);
     31 
     32     /**
     33      * Initialize a GL path range from an existing range of pre-initialized GPU
     34      * path objects. This class assumes ownership of the GPU path objects and
     35      * will delete them when done.
     36      */
     37     GrGLPathRange(GrGLGpu*,
     38                   GrGLuint basePathID,
     39                   int numPaths,
     40                   size_t gpuMemorySize,
     41                   const GrStrokeInfo&);
     42 
     43     GrGLuint basePathID() const { return fBasePathID; }
     44 
     45     bool shouldStroke() const { return fShouldStroke; }
     46     bool shouldFill() const { return fShouldFill; }
     47 
     48 protected:
     49     void onInitPath(int index, const SkPath&) const override;
     50 
     51     void onRelease() override;
     52     void onAbandon() override;
     53 
     54 private:
     55     void init();
     56     size_t onGpuMemorySize() const override { return fGpuMemorySize; }
     57 
     58     const GrStrokeInfo fStroke;
     59     GrGLuint fBasePathID;
     60     mutable size_t fGpuMemorySize;
     61     bool fShouldStroke;
     62     bool fShouldFill;
     63 
     64     typedef GrPathRange INHERITED;
     65 };
     66 
     67 #endif
     68