Index: src/pipe/SkPipeFormat.h |
diff --git a/src/pipe/SkPipeFormat.h b/src/pipe/SkPipeFormat.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a4176265cc6c78e150ff18e00b1162c5b5904a49 |
--- /dev/null |
+++ b/src/pipe/SkPipeFormat.h |
@@ -0,0 +1,109 @@ |
+/* |
+ * Copyright 2016 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#ifndef SkPipeFormat_DEFINED |
+#define SkPipeFormat_DEFINED |
+ |
+#include "SkTypes.h" |
+ |
+enum Verb { |
mtklein
2016/08/04 12:50:38
: uint8_t
?
mtklein
2016/08/04 12:50:38
Should probably namespace all these symbols someho
reed1
2016/08/04 13:18:41
Definitely, just going fast at the moment
|
+ kSave_Verb, |
+ kRestore_Verb, |
+ kConcat_Verb, |
+ |
+ kClipRect_Verb, |
+ kClipRRect_Verb, |
+ kClipPath_Verb, |
+ kClipRegion_Verb, |
+ |
+ kDrawDRRect_Verb, |
+ kDrawText_Verb, |
+ kDrawPosText_Verb, |
+ kDrawPosTextH_Verb, |
+ kDrawTextOnPath_Verb, |
+ kDrawTextBlob_Verb, |
+ kDrawTextRSXform_Verb, |
+ kDrawPatch_Verb, |
+ kDrawPaint_Verb, |
+ kDrawPoints_Verb, |
+ kDrawRect_Verb, |
+ kDrawPath_Verb, |
+ kDrawOval_Verb, |
+ kDrawRRect_Verb, |
+ |
+ kDrawImage_Verb, |
+ kDrawImageRect_Verb, |
+ kDrawImageNine_Verb, |
+ |
+ kDrawVertices_Verb, |
+ |
+ kDrawPicture_Verb, |
+ kDrawAnnotation_Verb, |
+ |
+ kLastVerb = kDrawAnnotation_Verb, |
+}; |
+ |
+enum PaintUsage { |
+ kText_PaintUsage = 1 << 0, |
+ kGeometry_PaintUsage = 1 << 1, |
+ kImage_PaintUsage = 1 << 2, |
+ kSaveLayer_PaintUsage = 1 << 3, |
+ kDrawPaint_PaintUsage = 1 << 4, |
+}; |
+ |
+// must sum to <= 32 |
+enum BitsPerField { |
+ kFlags_BPF = 16, |
+ kHint_BPF = 2, |
+ kAlign_BPF = 2, |
+ kFilter_BPF = 2, |
+ kCaps_BPF = 2, |
+ kJoins_BPF = 2, |
+}; |
+ |
+enum { |
+ kTextSize_NonDef = 1 << 0, |
+ kTextScaleX_NonDef = 1 << 1, |
+ kTextSkewX_NonDef = 1 << 2, |
+ kStrokeWidth_NonDef = 1 << 3, |
+ kStrokeMiter_NonDef = 1 << 4, |
+ kColor_NonDef = 1 << 5, |
+ kTypeface_NonDef = 1 << 6, |
+ kPathEffect_NonDef = 1 << 7, |
+ kShader_NonDef = 1 << 8, |
+ kXfermode_NonDef = 1 << 9, |
+ kMaskFilter_NonDef = 1 << 10, |
+ kColorFilter_NonDef = 1 << 11, |
+ kRasterizer_NonDef = 1 << 12, |
+ kImageFilter_NonDef = 1 << 13, |
+}; |
+ |
+/////////////////////////////////////////////////////////////////////////////////////////////////// |
+ |
+static inline bool fits_in(int value, int bits) { |
+ return value >= 0 && value < (1 << bits); |
+} |
+ |
+static inline void ASSERT_FITS_IN(int value, int bits) { |
+ SkASSERT(fits_in(value, bits)); |
+} |
+ |
+static inline uint32_t pack_verb(Verb verb, unsigned extra = 0) { |
+ ASSERT_FITS_IN(verb, 8); |
+ ASSERT_FITS_IN(extra, 24); |
+ return ((uint32_t)verb << 24) | extra; |
+} |
+ |
+static inline Verb unpack_verb(uint32_t data) { |
+ return (Verb)(data >> 24); |
+} |
+ |
+static inline unsigned unpack_verb_extra(uint32_t data) { |
+ return data & 0xFFFFFF; |
+} |
+ |
+#endif |