Glop drawBitmaps, drawPatches

Change-Id: I3f1cd3f47f97d2e0c9b9d153732e26ee0b1c58c2
diff --git a/libs/hwui/GlopBuilder.h b/libs/hwui/GlopBuilder.h
index 4b871d5..8a5ce8a 100644
--- a/libs/hwui/GlopBuilder.h
+++ b/libs/hwui/GlopBuilder.h
@@ -33,6 +33,13 @@
 class VertexBuffer;
 struct Glop;
 
+enum class TextureFillFlags {
+    kNone = 0,
+    kIsAlphaMaskTexture = 1 << 0,
+    kForceFilter = 1 << 1,
+};
+MAKE_FLAGS_ENUM(TextureFillFlags);
+
 class GlopBuilder {
     PREVENT_COPY_AND_ASSIGN(GlopBuilder);
 public:
@@ -43,11 +50,12 @@
     GlopBuilder& setMeshTexturedUvQuad(const UvMapper* uvMapper, const Rect uvs);
     GlopBuilder& setMeshVertexBuffer(const VertexBuffer& vertexBuffer, bool shadowInterp);
     GlopBuilder& setMeshIndexedQuads(Vertex* vertexData, int quadCount);
-    GlopBuilder& setMeshColoredTexturedMesh(ColorTextureVertex* vertexData, int elementCount);
+    GlopBuilder& setMeshTexturedMesh(TextureVertex* vertexData, int elementCount); // TODO: use indexed quads
+    GlopBuilder& setMeshColoredTexturedMesh(ColorTextureVertex* vertexData, int elementCount); // TODO: use indexed quads
     GlopBuilder& setMeshTexturedIndexedQuads(TextureVertex* vertexData, int elementCount); // TODO: take quadCount
 
     GlopBuilder& setFillPaint(const SkPaint& paint, float alphaScale);
-    GlopBuilder& setFillTexturePaint(Texture& texture, bool isAlphaMaskTexture,
+    GlopBuilder& setFillTexturePaint(Texture& texture, int textureFillFlags,
             const SkPaint* paint, float alphaScale);
     GlopBuilder& setFillPathTexturePaint(PathTexture& texture,
             const SkPaint& paint, float alphaScale);
@@ -63,7 +71,7 @@
 
     GlopBuilder& setModelViewMapUnitToRect(const Rect destination);
     GlopBuilder& setModelViewMapUnitToRectSnap(const Rect destination);
-    GlopBuilder& setModelViewMapUnitToRectOptionalSnap(bool snap, const Rect destination) {
+    GlopBuilder& setModelViewMapUnitToRectOptionalSnap(bool snap, const Rect& destination) {
         if (snap) {
             return setModelViewMapUnitToRectSnap(destination);
         } else {
@@ -72,6 +80,14 @@
     }
     GlopBuilder& setModelViewOffsetRect(float offsetX, float offsetY, const Rect source);
     GlopBuilder& setModelViewOffsetRectSnap(float offsetX, float offsetY, const Rect source);
+    GlopBuilder& setModelViewOffsetRectOptionalSnap(bool snap,
+            float offsetX, float offsetY, const Rect& source) {
+        if (snap) {
+            return setModelViewOffsetRectSnap(offsetX, offsetY, source);
+        } else {
+            return setModelViewOffsetRect(offsetX, offsetY, source);
+        }
+    }
 
     GlopBuilder& setRoundRectClipState(const RoundRectClipState* roundRectClipState);