diff -r 000000000000 -r 6474c204b198 gfx/skia/trunk/include/core/SkAnnotation.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfx/skia/trunk/include/core/SkAnnotation.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,123 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkAnnotation_DEFINED +#define SkAnnotation_DEFINED + +#include "SkRefCnt.h" +#include "SkString.h" + +class SkData; +class SkReadBuffer; +class SkWriteBuffer; +class SkStream; +class SkWStream; +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 SkNEW_ARGS(SkAnnotation, (key, value)); + } + + static SkAnnotation* Create(SkReadBuffer& buffer) { + return SkNEW_ARGS(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 + * safely ignored. + * + * The caller is responsible for managing its ownership of the SkData. + */ +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 + * safely ignored. + * + * The caller is responsible for managing its ownership of the SkData. + */ +SK_API void SkAnnotateNamedDestination(SkCanvas*, const SkPoint&, SkData*); + +/** + * Experimental! + * + * Annotate the canvas by making the specified rectangle link to a named + * destination. + * + * 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. + */ +SK_API void SkAnnotateLinkToDestination(SkCanvas*, const SkRect&, SkData*); + + +#endif