aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gm/internal_links.cpp77
-rw-r--r--gyp/gmslides.gypi1
-rw-r--r--include/core/SkAnnotation.h39
-rw-r--r--include/pdf/SkPDFDevice.h22
-rw-r--r--src/core/SkAnnotation.cpp42
-rw-r--r--src/core/SkDevice.cpp1
-rw-r--r--src/gpu/SkGpuDevice.cpp1
-rw-r--r--src/pdf/SkPDFDevice.cpp111
-rw-r--r--src/pdf/SkPDFDocument.cpp7
-rw-r--r--src/pdf/SkPDFPage.cpp4
-rw-r--r--src/pdf/SkPDFPage.h5
-rw-r--r--src/pipe/SkGPipePriv.h3
-rw-r--r--src/pipe/SkGPipeRead.cpp3
-rw-r--r--src/pipe/SkGPipeWrite.cpp2
-rw-r--r--src/ports/SkGlobalInitialization_default.cpp6
-rw-r--r--tests/AnnotationTest.cpp53
16 files changed, 39 insertions, 338 deletions
diff --git a/gm/internal_links.cpp b/gm/internal_links.cpp
deleted file mode 100644
index f9846e4c67..0000000000
--- a/gm/internal_links.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-
-/*
- * Copyright 2013 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-#include "gm.h"
-
-#include "SkAnnotation.h"
-#include "SkData.h"
-
-namespace skiagm {
-
-/** Draws two rectangles. In output formats that support internal links (PDF),
- * clicking the one labeled "Link to A" should take you to the one labeled
- * "Target A". Note that you'll need to zoom your PDF viewer in a fair bit in
- * order for the scrolling to not be blocked by the edge of the document.
- */
-class InternalLinksGM : public GM {
-public:
- InternalLinksGM() {
- this->setBGColor(0xFFDDDDDD);
- }
-
-protected:
- virtual SkString onShortName() {
- return SkString("internal_links");
- }
-
- virtual SkISize onISize() {
- return make_isize(700, 500);
- }
-
- virtual void onDraw(SkCanvas* canvas) {
- SkAutoTUnref<SkData> name(SkData::NewWithCString("target-a"));
-
- canvas->save();
- canvas->translate(SkIntToScalar(100), SkIntToScalar(100));
- drawLabeledRect(canvas, "Link to A", 0, 0);
- SkRect rect = SkRect::MakeXYWH(0, 0, SkIntToScalar(50), SkIntToScalar(20));
- SkAnnotateLinkToDestination(canvas, rect, name.get());
- canvas->restore();
-
- canvas->save();
- canvas->translate(SkIntToScalar(200), SkIntToScalar(200));
- SkPoint point = SkPoint::Make(SkIntToScalar(100), SkIntToScalar(50));
- drawLabeledRect(canvas, "Target A", point.x(), point.y());
- SkAnnotateNamedDestination(canvas, point, name.get());
- canvas->restore();
- }
-
-private:
- /** Draw an arbitrary rectangle at a given location and label it with some
- * text. */
- void drawLabeledRect(SkCanvas* canvas, const char* text, int x, int y) {
- SkPaint paint;
- paint.setColor(SK_ColorBLUE);
- SkRect rect = SkRect::MakeXYWH(SkIntToScalar(x), SkIntToScalar(y),
- SkIntToScalar(50), SkIntToScalar(20));
- canvas->drawRect(rect, paint);
-
- paint.setAntiAlias(true);
- paint.setTextSize(SkIntToScalar(25));
- paint.setColor(SK_ColorBLACK);
- canvas->drawText(text, strlen(text), x, y, paint);
- }
-
- typedef GM INHERITED;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-
-static GM* MyFactory(void*) { return SkNEW(InternalLinksGM); }
-static GMRegistry reg(MyFactory);
-
-}
diff --git a/gyp/gmslides.gypi b/gyp/gmslides.gypi
index ae36de09b4..0b42eed07a 100644
--- a/gyp/gmslides.gypi
+++ b/gyp/gmslides.gypi
@@ -50,7 +50,6 @@
'../gm/image.cpp',
'../gm/imagefiltersbase.cpp',
'../gm/imagefiltersgraph.cpp',
- '../gm/internal_links.cpp',
'../gm/lcdtext.cpp',
'../gm/linepaths.cpp',
'../gm/matrixconvolution.cpp',
diff --git a/include/core/SkAnnotation.h b/include/core/SkAnnotation.h
index bb7f6c443e..e1ecf6caf1 100644
--- a/include/core/SkAnnotation.h
+++ b/include/core/SkAnnotation.h
@@ -12,7 +12,6 @@
class SkData;
class SkDataSet;
-class SkPoint;
class SkStream;
class SkWStream;
@@ -65,18 +64,6 @@ 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();
};
///////////////////////////////////////////////////////////////////////////////
@@ -99,30 +86,4 @@ class SkCanvas;
*/
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
diff --git a/include/pdf/SkPDFDevice.h b/include/pdf/SkPDFDevice.h
index 90379f9f6b..a13d6175c7 100644
--- a/include/pdf/SkPDFDevice.h
+++ b/include/pdf/SkPDFDevice.h
@@ -17,7 +17,6 @@
#include "SkRect.h"
#include "SkRefCnt.h"
#include "SkStream.h"
-#include "SkTDArray.h"
#include "SkTScopedPtr.h"
class SkPDFArray;
@@ -34,7 +33,6 @@ class SkPDFStream;
// Private classes.
struct ContentEntry;
struct GraphicStateEntry;
-struct NamedDestination;
/** \class SkPDFDevice
@@ -144,12 +142,6 @@ public:
*/
SK_API const SkTDArray<SkPDFFont*>& getFontResources() const;
- /** Add our named destinations to the supplied dictionary.
- * @param dict Dictionary to add destinations to.
- * @param page The PDF object representing the page for this device.
- */
- void appendDestinations(SkPDFDict* dict, SkPDFObject* page);
-
/** Returns a copy of the media box for this device. The caller is required
* to unref() this when it is finished.
*/
@@ -199,7 +191,6 @@ private:
SkRegion fExistingClipRegion;
SkPDFArray* fAnnotations;
SkPDFDict* fResourceDict;
- SkTDArray<NamedDestination*> fNamedDestinations;
SkTDArray<SkPDFGraphicState*> fGraphicStateResources;
SkTDArray<SkPDFObject*> fXObjectResources;
@@ -282,17 +273,8 @@ private:
*/
void copyContentEntriesToData(ContentEntry* entry, SkWStream* data) const;
- bool handleRectAnnotation(const SkRect& r, const SkMatrix& matrix,
- const SkPaint& paint);
- bool handlePointAnnotation(const SkPoint* points, size_t count,
- const SkMatrix& matrix, const SkPaint& paint);
- SkPDFDict* createLinkAnnotation(const SkRect& r, const SkMatrix& matrix);
- void handleLinkToURL(SkData* urlData, const SkRect& r,
- const SkMatrix& matrix);
- void handleLinkToNamedDest(SkData* nameData, const SkRect& r,
- const SkMatrix& matrix);
- void defineNamedDestination(SkData* nameData, const SkPoint& point,
- const SkMatrix& matrix);
+ bool handleAnnotations(const SkRect& r, const SkMatrix& matrix,
+ const SkPaint& paint);
typedef SkDevice INHERITED;
};
diff --git a/src/core/SkAnnotation.cpp b/src/core/SkAnnotation.cpp
index 52fa9b79f2..5e4363e728 100644
--- a/src/core/SkAnnotation.cpp
+++ b/src/core/SkAnnotation.cpp
@@ -8,7 +8,6 @@
#include "SkAnnotation.h"
#include "SkDataSet.h"
#include "SkFlattenableBuffers.h"
-#include "SkPoint.h"
#include "SkStream.h"
SkAnnotation::SkAnnotation(SkDataSet* data, uint32_t flags) {
@@ -43,50 +42,23 @@ const char* SkAnnotationKeys::URL_Key() {
return "SkAnnotationKey_URL";
};
-const char* SkAnnotationKeys::Define_Named_Dest_Key() {
- return "SkAnnotationKey_Define_Named_Dest";
-};
-
-const char* SkAnnotationKeys::Link_Named_Dest_Key() {
- return "SkAnnotationKey_Link_Named_Dest";
-};
-
///////////////////////////////////////////////////////////////////////////////
#include "SkCanvas.h"
-static void annotate_paint(SkPaint& paint, const char* key, SkData* value) {
- SkAutoTUnref<SkDataSet> dataset(SkNEW_ARGS(SkDataSet, (key, value)));
- SkAnnotation* ann = SkNEW_ARGS(SkAnnotation, (dataset,
- SkAnnotation::kNoDraw_Flag));
-
- paint.setAnnotation(ann)->unref();
- SkASSERT(paint.isNoDrawAnnotation());
-}
-
void SkAnnotateRectWithURL(SkCanvas* canvas, const SkRect& rect, SkData* value) {
if (NULL == value) {
return;
}
- SkPaint paint;
- annotate_paint(paint, SkAnnotationKeys::URL_Key(), value);
- canvas->drawRect(rect, paint);
-}
-void SkAnnotateNamedDestination(SkCanvas* canvas, const SkPoint& point, SkData* name) {
- if (NULL == name) {
- return;
- }
- SkPaint paint;
- annotate_paint(paint, SkAnnotationKeys::Define_Named_Dest_Key(), name);
- canvas->drawPoint(point.x(), point.y(), paint);
-}
+ const char* key = SkAnnotationKeys::URL_Key();
+ SkAutoTUnref<SkDataSet> dataset(SkNEW_ARGS(SkDataSet, (key, value)));
+ SkAnnotation* ann = SkNEW_ARGS(SkAnnotation, (dataset,
+ SkAnnotation::kNoDraw_Flag));
-void SkAnnotateLinkToDestination(SkCanvas* canvas, const SkRect& rect, SkData* name) {
- if (NULL == name) {
- return;
- }
SkPaint paint;
- annotate_paint(paint, SkAnnotationKeys::Link_Named_Dest_Key(), name);
+ paint.setAnnotation(ann)->unref();
+ SkASSERT(paint.isNoDrawAnnotation());
+
canvas->drawRect(rect, paint);
}
diff --git a/src/core/SkDevice.cpp b/src/core/SkDevice.cpp
index 90d41862de..78ce0f635d 100644
--- a/src/core/SkDevice.cpp
+++ b/src/core/SkDevice.cpp
@@ -348,7 +348,6 @@ void SkDevice::drawPaint(const SkDraw& draw, const SkPaint& paint) {
void SkDevice::drawPoints(const SkDraw& draw, SkCanvas::PointMode mode, size_t count,
const SkPoint pts[], const SkPaint& paint) {
- CHECK_FOR_NODRAW_ANNOTATION(paint);
draw.drawPoints(mode, count, pts, paint);
}
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index 77c4bd1115..82c26912a3 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -597,7 +597,6 @@ static const GrPrimitiveType gPointMode2PrimtiveType[] = {
void SkGpuDevice::drawPoints(const SkDraw& draw, SkCanvas::PointMode mode,
size_t count, const SkPoint pts[], const SkPaint& paint) {
- CHECK_FOR_NODRAW_ANNOTATION(paint);
CHECK_SHOULD_DRAW(draw, false);
SkScalar width = paint.getStrokeWidth();
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp
index 245299639e..eae7ab73f0 100644
--- a/src/pdf/SkPDFDevice.cpp
+++ b/src/pdf/SkPDFDevice.cpp
@@ -645,7 +645,6 @@ void SkPDFDevice::cleanUp(bool clearFontUsage) {
fShaderResources.unrefAll();
SkSafeUnref(fAnnotations);
SkSafeUnref(fResourceDict);
- fNamedDestinations.deleteAll();
if (clearFontUsage) {
fFontGlyphUsage->reset();
@@ -704,10 +703,6 @@ void SkPDFDevice::drawPoints(const SkDraw& d, SkCanvas::PointMode mode,
return;
}
- if (handlePointAnnotation(points, count, *d.fMatrix, passedPaint)) {
- return;
- }
-
// SkDraw::drawPoints converts to multiple calls to fDevice->drawPath.
// We only use this when there's a path effect because of the overhead
// of multiple calls to setUpContentEntry it causes.
@@ -796,7 +791,7 @@ void SkPDFDevice::drawRect(const SkDraw& d, const SkRect& r,
return;
}
- if (handleRectAnnotation(r, *d.fMatrix, paint)) {
+ if (handleAnnotations(r, *d.fMatrix, paint)) {
return;
}
@@ -852,7 +847,7 @@ void SkPDFDevice::drawPath(const SkDraw& d, const SkPath& origPath,
return;
}
- if (handleRectAnnotation(pathPtr->getBounds(), *d.fMatrix, paint)) {
+ if (handleAnnotations(pathPtr->getBounds(), *d.fMatrix, paint)) {
return;
}
@@ -1291,43 +1286,19 @@ SkData* SkPDFDevice::copyContentToData() const {
return data.copyToData();
}
-bool SkPDFDevice::handleRectAnnotation(const SkRect& r, const SkMatrix& matrix,
- const SkPaint& p) {
+bool SkPDFDevice::handleAnnotations(const SkRect& r, const SkMatrix& matrix,
+ const SkPaint& p) {
SkAnnotation* annotationInfo = p.getAnnotation();
if (!annotationInfo) {
return false;
}
SkData* urlData = annotationInfo->find(SkAnnotationKeys::URL_Key());
- if (urlData) {
- handleLinkToURL(urlData, r, matrix);
- return p.isNoDrawAnnotation();
- }
- SkData* linkToName = annotationInfo->find(SkAnnotationKeys::Link_Named_Dest_Key());
- if (linkToName) {
- handleLinkToNamedDest(linkToName, r, matrix);
- return p.isNoDrawAnnotation();
- }
- return false;
-}
-
-bool SkPDFDevice::handlePointAnnotation(const SkPoint* points, size_t count,
- const SkMatrix& matrix,
- const SkPaint& paint) {
- SkAnnotation* annotationInfo = paint.getAnnotation();
- if (!annotationInfo) {
+ if (!urlData) {
return false;
}
- SkData* nameData = annotationInfo->find(SkAnnotationKeys::Define_Named_Dest_Key());
- if (nameData) {
- for (size_t i = 0; i < count; i++) {
- defineNamedDestination(nameData, points[i], matrix);
- }
- return paint.isNoDrawAnnotation();
- }
- return false;
-}
-SkPDFDict* SkPDFDevice::createLinkAnnotation(const SkRect& r, const SkMatrix& matrix) {
+ SkString url(static_cast<const char *>(urlData->data()),
+ urlData->size() - 1);
SkMatrix transform = matrix;
transform.postConcat(fInitialTransform);
SkRect translatedRect;
@@ -1336,18 +1307,18 @@ SkPDFDict* SkPDFDevice::createLinkAnnotation(const SkRect& r, const SkMatrix& ma
if (NULL == fAnnotations) {
fAnnotations = SkNEW(SkPDFArray);
}
- SkPDFDict* annotation(SkNEW_ARGS(SkPDFDict, ("Annot")));
+ SkAutoTUnref<SkPDFDict> annotation(new SkPDFDict("Annot"));
annotation->insertName("Subtype", "Link");
- fAnnotations->append(annotation);
+ fAnnotations->append(annotation.get());
- SkAutoTUnref<SkPDFArray> border(SkNEW(SkPDFArray));
+ SkAutoTUnref<SkPDFArray> border(new SkPDFArray);
border->reserve(3);
border->appendInt(0); // Horizontal corner radius.
border->appendInt(0); // Vertical corner radius.
border->appendInt(0); // Width, 0 = no border.
annotation->insert("Border", border.get());
- SkAutoTUnref<SkPDFArray> rect(SkNEW(SkPDFArray));
+ SkAutoTUnref<SkPDFArray> rect(new SkPDFArray);
rect->reserve(4);
rect->appendScalar(translatedRect.fLeft);
rect->appendScalar(translatedRect.fTop);
@@ -1355,66 +1326,12 @@ SkPDFDict* SkPDFDevice::createLinkAnnotation(const SkRect& r, const SkMatrix& ma
rect->appendScalar(translatedRect.fBottom);
annotation->insert("Rect", rect.get());
- return annotation;
-}
-
-void SkPDFDevice::handleLinkToURL(SkData* urlData, const SkRect& r,
- const SkMatrix& matrix) {
- SkAutoTUnref<SkPDFDict> annotation(createLinkAnnotation(r, matrix));
-
- SkString url(static_cast<const char *>(urlData->data()),
- urlData->size() - 1);
- SkAutoTUnref<SkPDFDict> action(SkNEW_ARGS(SkPDFDict, ("Action")));
+ SkAutoTUnref<SkPDFDict> action(new SkPDFDict("Action"));
action->insertName("S", "URI");
- action->insert("URI", SkNEW_ARGS(SkPDFString, (url)))->unref();
+ action->insert("URI", new SkPDFString(url))->unref();
annotation->insert("A", action.get());
-}
-
-void SkPDFDevice::handleLinkToNamedDest(SkData* nameData, const SkRect& r,
- const SkMatrix& matrix) {
- SkAutoTUnref<SkPDFDict> annotation(createLinkAnnotation(r, matrix));
- SkString name(static_cast<const char *>(nameData->data()),
- nameData->size() - 1);
- annotation->insert("Dest", SkNEW_ARGS(SkPDFString, (name)))->unref();
-}
-
-struct NamedDestination {
- const SkData* nameData;
- SkPoint point;
- NamedDestination(const SkData* nameData, const SkPoint& point)
- : nameData(nameData), point(point) {
- nameData->ref();
- }
-
- ~NamedDestination() {
- nameData->unref();
- }
-};
-
-void SkPDFDevice::defineNamedDestination(SkData* nameData, const SkPoint& point,
- const SkMatrix& matrix) {
- SkMatrix transform = matrix;
- transform.postConcat(fInitialTransform);
- SkPoint translatedPoint;
- transform.mapXY(point.x(), point.y(), &translatedPoint);
- fNamedDestinations.push(
- SkNEW_ARGS(NamedDestination, (nameData, translatedPoint)));
-}
-
-void SkPDFDevice::appendDestinations(SkPDFDict* dict, SkPDFObject* page) {
- int nDest = fNamedDestinations.count();
- for (int i = 0; i < nDest; i++) {
- NamedDestination* dest = fNamedDestinations[i];
- SkAutoTUnref<SkPDFArray> pdfDest(SkNEW(SkPDFArray));
- pdfDest->reserve(5);
- pdfDest->append(SkNEW_ARGS(SkPDFObjRef, (page)))->unref();
- pdfDest->appendName("XYZ");
- pdfDest->appendInt(dest->point.x());
- pdfDest->appendInt(dest->point.y());
- pdfDest->appendInt(0); // Leave zoom unchanged
- dict->insert(static_cast<const char *>(dest->nameData->data()), pdfDest);
- }
+ return p.isNoDrawAnnotation();
}
SkPDFFormXObject* SkPDFDevice::createFormXObjectFromDevice() {
diff --git a/src/pdf/SkPDFDocument.cpp b/src/pdf/SkPDFDocument.cpp
index 7ee2778326..4c66c6bb90 100644
--- a/src/pdf/SkPDFDocument.cpp
+++ b/src/pdf/SkPDFDocument.cpp
@@ -107,25 +107,18 @@ bool SkPDFDocument::emitPDF(SkWStream* stream) {
fDocCatalog->insert("OutputIntent", intentArray.get());
*/
- SkPDFDict* dests = SkNEW(SkPDFDict); // fPageResources owns reference
- fCatalog->addObject(dests, true /* onFirstPage */);
- fPageResources.push(dests);
-
bool firstPage = true;
for (int i = 0; i < fPages.count(); i++) {
int resourceCount = fPageResources.count();
fPages[i]->finalizePage(fCatalog.get(), firstPage, &fPageResources);
addResourcesToCatalog(resourceCount, firstPage, &fPageResources,
fCatalog.get());
- fPages[i]->appendDestinations(dests);
if (i == 0) {
firstPage = false;
fSecondPageFirstResourceIndex = fPageResources.count();
}
}
- fDocCatalog->insert("Dests", SkNEW_ARGS(SkPDFObjRef, (dests)))->unref();
-
// Build font subsetting info before proceeding.
perform_font_subsetting(fCatalog.get(), fPages, &fSubstitutes);
diff --git a/src/pdf/SkPDFPage.cpp b/src/pdf/SkPDFPage.cpp
index 4cdc00003b..f47f8ffd46 100644
--- a/src/pdf/SkPDFPage.cpp
+++ b/src/pdf/SkPDFPage.cpp
@@ -147,7 +147,3 @@ const SkTDArray<SkPDFFont*>& SkPDFPage::getFontResources() const {
const SkPDFGlyphSetMap& SkPDFPage::getFontGlyphUsage() const {
return fDevice->getFontGlyphUsage();
}
-
-void SkPDFPage::appendDestinations(SkPDFDict* dict) {
- fDevice->appendDestinations(dict, this);
-}
diff --git a/src/pdf/SkPDFPage.h b/src/pdf/SkPDFPage.h
index 285a2f565e..72ba335e66 100644
--- a/src/pdf/SkPDFPage.h
+++ b/src/pdf/SkPDFPage.h
@@ -48,11 +48,6 @@ public:
void finalizePage(SkPDFCatalog* catalog, bool firstPage,
SkTDArray<SkPDFObject*>* resourceObjects);
- /** Add destinations for this page to the supplied dictionary.
- * @param dict Dictionary to add destinations to.
- */
- void appendDestinations(SkPDFDict* dict);
-
/** Determine the size of the page content and store to the catalog
* the offsets of all nonresource-indirect objects that make up the page
* content. This must be called before emitPage(), but after finalizePage.
diff --git a/src/pipe/SkGPipePriv.h b/src/pipe/SkGPipePriv.h
index f5f98f2bdf..b563652cb9 100644
--- a/src/pipe/SkGPipePriv.h
+++ b/src/pipe/SkGPipePriv.h
@@ -25,9 +25,8 @@ enum PaintFlats {
kShader_PaintFlat,
kImageFilter_PaintFlat,
kXfermode_PaintFlat,
- kAnnotation_PaintFlat,
- kLast_PaintFlat = kAnnotation_PaintFlat
+ kLast_PaintFlat = kXfermode_PaintFlat
};
#define kCount_PaintFlats (kLast_PaintFlat + 1)
diff --git a/src/pipe/SkGPipeRead.cpp b/src/pipe/SkGPipeRead.cpp
index f47f3bfe65..6cffb1b343 100644
--- a/src/pipe/SkGPipeRead.cpp
+++ b/src/pipe/SkGPipeRead.cpp
@@ -53,9 +53,6 @@ static void set_paintflat(SkPaint* paint, SkFlattenable* obj, unsigned paintFlat
case kXfermode_PaintFlat:
paint->setXfermode((SkXfermode*)obj);
break;
- case kAnnotation_PaintFlat:
- paint->setAnnotation((SkAnnotation*)obj);
- break;
default:
SkDEBUGFAIL("never gets here");
}
diff --git a/src/pipe/SkGPipeWrite.cpp b/src/pipe/SkGPipeWrite.cpp
index 34020dfe7f..cfd1e7ceef 100644
--- a/src/pipe/SkGPipeWrite.cpp
+++ b/src/pipe/SkGPipeWrite.cpp
@@ -6,7 +6,6 @@
* found in the LICENSE file.
*/
-#include "SkAnnotation.h"
#include "SkBitmapHeap.h"
#include "SkCanvas.h"
#include "SkColorFilter.h"
@@ -48,7 +47,6 @@ static SkFlattenable* get_paintflat(const SkPaint& paint, unsigned paintFlat) {
case kShader_PaintFlat: return paint.getShader();
case kImageFilter_PaintFlat: return paint.getImageFilter();
case kXfermode_PaintFlat: return paint.getXfermode();
- case kAnnotation_PaintFlat: return paint.getAnnotation();
}
SkDEBUGFAIL("never gets here");
return NULL;
diff --git a/src/ports/SkGlobalInitialization_default.cpp b/src/ports/SkGlobalInitialization_default.cpp
index 2d35cefc7d..26a61ca394 100644
--- a/src/ports/SkGlobalInitialization_default.cpp
+++ b/src/ports/SkGlobalInitialization_default.cpp
@@ -15,7 +15,6 @@
#include "Sk1DPathEffect.h"
#include "Sk2DPathEffect.h"
-#include "SkAnnotation.h"
#include "SkAvoidXfermode.h"
#include "SkBicubicImageFilter.h"
#include "SkBitmapSource.h"
@@ -31,8 +30,6 @@
#include "SkComposeShader.h"
#include "SkCornerPathEffect.h"
#include "SkDashPathEffect.h"
-#include "SkData.h"
-#include "SkDataSet.h"
#include "SkDiscretePathEffect.h"
#include "SkDisplacementMapEffect.h"
#include "SkEmptyShader.h"
@@ -55,7 +52,6 @@
void SkFlattenable::InitializeFlattenables() {
- SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkAnnotation)
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkAvoidXfermode)
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBicubicImageFilter)
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBitmapProcShader)
@@ -70,8 +66,6 @@ void SkFlattenable::InitializeFlattenables() {
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeShader)
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkCornerPathEffect)
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDashPathEffect)
- SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkData)
- SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDataSet)
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDilateImageFilter)
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiscretePathEffect)
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDisplacementMapEffect)
diff --git a/tests/AnnotationTest.cpp b/tests/AnnotationTest.cpp
index 5429b58912..586525a9e8 100644
--- a/tests/AnnotationTest.cpp
+++ b/tests/AnnotationTest.cpp
@@ -12,18 +12,6 @@
#include "SkPDFDevice.h"
#include "SkPDFDocument.h"
-/** Returns true if data (may contain null characters) contains needle (null
- * terminated). */
-static bool ContainsString(const char* data, size_t dataSize, const char* needle) {
- size_t nSize = strlen(needle);
- for (size_t i = 0; i < dataSize - nSize; i++) {
- if (strncmp(&data[i], needle, nSize) == 0) {
- return true;
- }
- }
- return false;
-}
-
static void test_nodraw(skiatest::Reporter* reporter) {
SkBitmap bm;
bm.setConfig(SkBitmap::kARGB_8888_Config, 10, 10);
@@ -67,38 +55,27 @@ static void test_pdf_link_annotations(skiatest::Reporter* reporter) {
SkAutoDataUnref out(outStream.copyToData());
const char* rawOutput = (const char*)out->data();
- REPORTER_ASSERT(reporter,
- ContainsString(rawOutput, out->size(), "/Annots ")
- == tests[testNum].expectAnnotations);
+ bool found = false;
+ for (size_t i = 0; i < out->size() - 8; i++) {
+ if (rawOutput[i + 0] == '/' &&
+ rawOutput[i + 1] == 'A' &&
+ rawOutput[i + 2] == 'n' &&
+ rawOutput[i + 3] == 'n' &&
+ rawOutput[i + 4] == 'o' &&
+ rawOutput[i + 5] == 't' &&
+ rawOutput[i + 6] == 's' &&
+ rawOutput[i + 7] == ' ') {
+ found = true;
+ break;
+ }
+ }
+ REPORTER_ASSERT(reporter, found == tests[testNum].expectAnnotations);
}
}
-static void test_named_destination_annotations(skiatest::Reporter* reporter) {
- SkISize size = SkISize::Make(612, 792);
- SkMatrix initialTransform;
- initialTransform.reset();
- SkPDFDevice device(size, size, initialTransform);
- SkCanvas canvas(&device);
-
- SkPoint p = SkPoint::Make(SkIntToScalar(72), SkIntToScalar(72));
- SkAutoDataUnref data(SkData::NewWithCString("example"));
- SkAnnotateNamedDestination(&canvas, p, data.get());
-
- SkPDFDocument doc;
- doc.appendPage(&device);
- SkDynamicMemoryWStream outStream;
- doc.emitPDF(&outStream);
- SkAutoDataUnref out(outStream.copyToData());
- const char* rawOutput = (const char*)out->data();
-
- REPORTER_ASSERT(reporter,
- ContainsString(rawOutput, out->size(), "/example "));
-}
-
static void TestAnnotation(skiatest::Reporter* reporter) {
test_nodraw(reporter);
test_pdf_link_annotations(reporter);
- test_named_destination_annotations(reporter);
}
#include "TestClassDef.h"