Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / src / gpu / effects / GrDistanceFieldTextureEffect.h
index 692290c..ab84753 100644 (file)
 class GrGLDistanceFieldTextureEffect;
 class GrGLDistanceFieldLCDTextureEffect;
 
+enum GrDistanceFieldEffectFlags {
+    kSimilarity_DistanceFieldEffectFlag = 0x01,   // ctm is similarity matrix
+    kRectToRect_DistanceFieldEffectFlag = 0x02,   // ctm maps rects to rects
+    kUseLCD_DistanceFieldEffectFlag     = 0x04,   // use lcd text
+    kBGR_DistanceFieldEffectFlag        = 0x08,   // lcd display has bgr order
+    kPortrait_DistanceFieldEffectFlag   = 0x10,   // lcd display is in portrait mode (not used yet)
+    
+    kUniformScale_DistanceFieldEffectMask = kSimilarity_DistanceFieldEffectFlag |
+                                            kRectToRect_DistanceFieldEffectFlag,
+    // The subset of the flags relevant to GrDistanceFieldTextureEffect
+    kNonLCD_DistanceFieldEffectMask       = kSimilarity_DistanceFieldEffectFlag,
+    // The subset of the flags relevant to GrDistanceFieldLCDTextureEffect
+    kLCD_DistanceFieldEffectMask          = kSimilarity_DistanceFieldEffectFlag |
+                                            kRectToRect_DistanceFieldEffectFlag |
+                                            kUseLCD_DistanceFieldEffectFlag |
+                                            kBGR_DistanceFieldEffectFlag,
+};
+
 /**
  * The output color of this effect is a modulation of the input color and a sample from a
  * distance field texture (using a smoothed step function near 0.5).
@@ -23,20 +41,18 @@ class GrGLDistanceFieldLCDTextureEffect;
 class GrDistanceFieldTextureEffect : public GrVertexEffect {
 public:
 #ifdef SK_GAMMA_APPLY_TO_A8
-    static GrEffectRef* Create(GrTexture* tex, const GrTextureParams& params,
-                               GrTexture* gamma, const GrTextureParams& gammaParams, float lum,
-                               bool similarity) {
-        AutoEffectUnref effect(SkNEW_ARGS(GrDistanceFieldTextureEffect, (tex, params,
-                                                                         gamma, gammaParams, lum,
-                                                                         similarity)));
+    static GrEffect* Create(GrTexture* tex, const GrTextureParams& params,
+                            GrTexture* gamma, const GrTextureParams& gammaParams, float lum,
+                            uint32_t flags) {
+       return SkNEW_ARGS(GrDistanceFieldTextureEffect, (tex, params, gamma, gammaParams, lum,
+                                                        flags));
+    }
 #else
-    static GrEffectRef* Create(GrTexture* tex, const GrTextureParams& params,
-                               bool similarity) {
-        AutoEffectUnref effect(SkNEW_ARGS(GrDistanceFieldTextureEffect, (tex, params,
-                                                                         similarity)));
-#endif
-        return CreateEffectRef(effect);
+    static GrEffect* Create(GrTexture* tex, const GrTextureParams& params,
+                            uint32_t flags) {
+        return  SkNEW_ARGS(GrDistanceFieldTextureEffect, (tex, params, flags));
     }
+#endif
 
     virtual ~GrDistanceFieldTextureEffect() {}
 
@@ -46,7 +62,7 @@ public:
 #ifdef SK_GAMMA_APPLY_TO_A8
     float getLuminance() const { return fLuminance; }
 #endif
-    bool isSimilarity() const { return fIsSimilarity; }
+    uint32_t getFlags() const { return fFlags; }
 
     typedef GrGLDistanceFieldTextureEffect GLEffect;
 
@@ -57,7 +73,7 @@ private:
 #ifdef SK_GAMMA_APPLY_TO_A8
                                  GrTexture* gamma, const GrTextureParams& gammaParams, float lum,
 #endif
-                                 bool uniformScale);
+                                 uint32_t flags);
 
     virtual bool onIsEqual(const GrEffect& other) const SK_OVERRIDE;
 
@@ -66,7 +82,7 @@ private:
     GrTextureAccess fGammaTextureAccess;
     float           fLuminance;
 #endif
-    bool            fIsSimilarity;
+    uint32_t        fFlags;
 
     GR_DECLARE_EFFECT_TEST;
 
@@ -81,14 +97,11 @@ private:
  */
 class GrDistanceFieldLCDTextureEffect : public GrVertexEffect {
 public:
-    static GrEffectRef* Create(GrTexture* tex, const GrTextureParams& params,
-                               GrTexture* gamma, const GrTextureParams& gammaParams, 
-                               SkColor textColor,
-                               bool uniformScale, bool useBGR) {
-        AutoEffectUnref effect(SkNEW_ARGS(GrDistanceFieldLCDTextureEffect,
-                                          (tex, params, gamma, gammaParams, textColor, uniformScale,
-                                           useBGR)));
-        return CreateEffectRef(effect);
+    static GrEffect* Create(GrTexture* tex, const GrTextureParams& params,
+                            GrTexture* gamma, const GrTextureParams& gammaParams, 
+                            SkColor textColor, uint32_t flags) {
+        return SkNEW_ARGS(GrDistanceFieldLCDTextureEffect,
+                          (tex, params, gamma, gammaParams, textColor, flags));
     }
 
     virtual ~GrDistanceFieldLCDTextureEffect() {}
@@ -97,8 +110,7 @@ public:
 
     virtual void getConstantColorComponents(GrColor* color, uint32_t* validFlags) const SK_OVERRIDE;
     GrColor getTextColor() const { return fTextColor; }
-    bool isUniformScale() const { return fUniformScale; }
-    bool useBGR() const { return fUseBGR; }
+    uint32_t getFlags() const { return fFlags; }
 
     typedef GrGLDistanceFieldLCDTextureEffect GLEffect;
 
@@ -108,15 +120,14 @@ private:
     GrDistanceFieldLCDTextureEffect(GrTexture* texture, const GrTextureParams& params,
                                     GrTexture* gamma, const GrTextureParams& gammaParams,
                                     SkColor textColor,
-                                    bool uniformScale, bool useBGR);
+                                    uint32_t flags);
 
     virtual bool onIsEqual(const GrEffect& other) const SK_OVERRIDE;
 
     GrTextureAccess fTextureAccess;
     GrTextureAccess fGammaTextureAccess;
     GrColor         fTextColor;
-    bool            fUniformScale;
-    bool            fUseBGR;
+    uint32_t        fFlags;
 
     GR_DECLARE_EFFECT_TEST;