Index: include/core/SkAnnotation.h |
diff --git a/include/core/SkAnnotation.h b/include/core/SkAnnotation.h |
index 35cc2b5d04613fe4e842e8d20d16cb0343f4c303..80503c78d21dad490662cceda0e50de35d4cd3a5 100644 |
--- a/include/core/SkAnnotation.h |
+++ b/include/core/SkAnnotation.h |
@@ -8,18 +8,83 @@ |
#ifndef SkAnnotation_DEFINED |
#define SkAnnotation_DEFINED |
+#include "SkRefCnt.h" |
+#include "SkString.h" |
#include "SkTypes.h" |
class SkData; |
+class SkReadBuffer; |
+class SkWriteBuffer; |
struct SkPoint; |
+ |
+/** |
+ * Experimental class for annotating draws. Do not use directly yet. |
+ * Use helper functions at the bottom of this file for now. |
+ */ |
+class SkAnnotation : public SkRefCnt { |
+public: |
+ virtual ~SkAnnotation(); |
+ |
+ static SkAnnotation* Create(const char key[], SkData* value) { |
+ return new SkAnnotation(key, value); |
+ } |
+ |
+ static SkAnnotation* Create(SkReadBuffer& buffer) { return new SkAnnotation(buffer); } |
+ |
+ /** |
+ * Return the data for the specified key, or NULL. |
+ */ |
+ SkData* find(const char key[]) const; |
+ |
+ void writeToBuffer(SkWriteBuffer&) const; |
+ |
+private: |
+ SkAnnotation(const char key[], SkData* value); |
+ SkAnnotation(SkReadBuffer&); |
+ |
+ SkString fKey; |
+ SkData* fData; |
+ |
+ typedef SkRefCnt INHERITED; |
+}; |
+ |
+/** |
+ * Experimental collection of predefined Keys into the Annotation dictionary |
+ */ |
+class SkAnnotationKeys { |
+public: |
+ /** |
+ * Returns the canonical key whose payload is a URL |
+ */ |
+ static const char* URL_Key(); |
+ |
+ /** |
+ * Returns the canonical key whose payload is the name of a destination to |
+ * be defined. |
+ */ |
+ static const char* Define_Named_Dest_Key(); |
+ |
+ /** |
+ * Returns the canonical key whose payload is the name of a destination to |
+ * be linked to. |
+ */ |
+ static const char* Link_Named_Dest_Key(); |
+}; |
+ |
+/////////////////////////////////////////////////////////////////////////////// |
+// |
+// Experimental helper functions to use Annotations |
+// |
+ |
struct SkRect; |
class SkCanvas; |
/** |
+ * Experimental! |
+ * |
* Annotate the canvas by associating the specified URL with the |
- * specified rectangle (in local coordinates, just like drawRect). |
- * |
- * If the backend of this canvas does not support annotations, this call is |
+ * specified rectangle (in local coordinates, just like drawRect). If the |
+ * backend of this canvas does not support annotations, this call is |
* safely ignored. |
* |
* The caller is responsible for managing its ownership of the SkData. |
@@ -27,6 +92,8 @@ |
SK_API void SkAnnotateRectWithURL(SkCanvas*, const SkRect&, SkData*); |
/** |
+ * Experimental! |
+ * |
* Annotate the canvas by associating a name with the specified point. |
* |
* If the backend of this canvas does not support annotations, this call is |
@@ -37,6 +104,8 @@ |
SK_API void SkAnnotateNamedDestination(SkCanvas*, const SkPoint&, SkData*); |
/** |
+ * Experimental! |
+ * |
* Annotate the canvas by making the specified rectangle link to a named |
* destination. |
* |
@@ -47,4 +116,5 @@ |
*/ |
SK_API void SkAnnotateLinkToDestination(SkCanvas*, const SkRect&, SkData*); |
+ |
#endif |