aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gyp/core.gyp3
-rw-r--r--include/core/SkDataRef.h97
-rw-r--r--include/core/SkStream.h4
-rw-r--r--src/animator/SkDisplayPost.cpp14
-rw-r--r--src/animator/SkDisplayPost.h4
-rw-r--r--src/animator/SkDisplayType.cpp8
-rw-r--r--src/animator/SkDisplayType.h2
-rw-r--r--src/animator/SkDisplayable.h2
-rw-r--r--src/animator/SkIntArray.h4
-rw-r--r--src/animator/SkPostParts.cpp16
-rw-r--r--src/animator/SkPostParts.h6
-rw-r--r--src/core/SkDataRef.cpp106
-rw-r--r--src/core/SkStream.cpp9
-rw-r--r--tests/DataRefTest.cpp18
-rw-r--r--tests/StreamTest.cpp4
15 files changed, 48 insertions, 249 deletions
diff --git a/gyp/core.gyp b/gyp/core.gyp
index e9b019ff5d..c02d1f5d5d 100644
--- a/gyp/core.gyp
+++ b/gyp/core.gyp
@@ -55,7 +55,7 @@
'../src/core/SkCoreBlitters.h',
'../src/core/SkCubicClipper.cpp',
'../src/core/SkCubicClipper.h',
- '../src/core/SkDataRef.cpp',
+ '../src/core/SkData.cpp',
'../src/core/SkDebug.cpp',
'../src/core/SkDeque.cpp',
'../src/core/SkDevice.cpp',
@@ -176,6 +176,7 @@
'../include/core/SkColorPriv.h',
'../include/core/SkColorShader.h',
'../include/core/SkComposeShader.h',
+ '../include/core/SkData.h',
'../include/core/SkDeque.h',
'../include/core/SkDescriptor.h',
'../include/core/SkDevice.h',
diff --git a/include/core/SkDataRef.h b/include/core/SkDataRef.h
deleted file mode 100644
index abd25c6b28..0000000000
--- a/include/core/SkDataRef.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- Copyright 2011 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-
-#ifndef SkDataRef_DEFINED
-#define SkDataRef_DEFINED
-
-#include "SkRefCnt.h"
-
-/**
- * SkDataRef holds an immutable data buffer. Not only is the data immutable,
- * but the actual ptr that is returned (by data() or bytes()) is guaranteed
- * to always be the same for the life of this instance.
- */
-class SkDataRef : public SkRefCnt {
-public:
- /**
- * Returns the number of bytes stored.
- */
- size_t size() const { return fSize; }
-
- /**
- * Returns the ptr to the data.
- */
- const void* data() const { return fPtr; }
-
- /**
- * Like data(), returns a read-only ptr into the data, but in this case
- * it is cast to uint8_t*, to make it easy to add an offset to it.
- */
- const uint8_t* bytes() const {
- return reinterpret_cast<const uint8_t*>(fPtr);
- }
-
- /**
- * Helper to copy a range of the data into a caller-provided buffer.
- * Returns the actual number of bytes copied, after clamping offset and
- * length to the size of the data. If buffer is NULL, it is ignored, and
- * only the computed number of bytes is returned.
- */
- size_t copyRange(size_t offset, size_t length, void* buffer) const;
-
- /**
- * Function that, if provided, will be called when the SkDataRef goes out
- * of scope, allowing for custom allocation/freeing of the data.
- */
- typedef void (*ReleaseProc)(const void* ptr, size_t length, void* context);
-
- /**
- * Create a new dataref by copying the specified data
- */
- static SkDataRef* NewWithCopy(const void* data, size_t length);
-
- /**
- * Create a new dataref, taking the data ptr as is, and using the
- * releaseproc to free it. The proc may be NULL.
- */
- static SkDataRef* NewWithProc(const void* data, size_t length,
- ReleaseProc proc, void* context);
-
- /**
- * Create a new dataref using a subset of the data in the specified
- * src dataref.
- */
- static SkDataRef* NewSubset(const SkDataRef* src, size_t offset, size_t length);
-
- /**
- * Returns a new empty dataref (or a reference to a shared empty dataref).
- * New or shared, the caller must see that unref() is eventually called.
- */
- static SkDataRef* NewEmpty();
-
-private:
- ReleaseProc fReleaseProc;
- void* fReleaseProcContext;
-
- const void* fPtr;
- size_t fSize;
-
- SkDataRef(const void* ptr, size_t size, ReleaseProc, void* context);
- ~SkDataRef();
-};
-
-#endif
diff --git a/include/core/SkStream.h b/include/core/SkStream.h
index 9dfb8df646..915afdd672 100644
--- a/include/core/SkStream.h
+++ b/include/core/SkStream.h
@@ -20,7 +20,7 @@
#include "SkRefCnt.h"
#include "SkScalar.h"
-class SkDataRef;
+class SkData;
class SK_API SkStream : public SkRefCnt {
public:
@@ -297,7 +297,7 @@ public:
/**
* Return a copy of the data written so far
*/
- SkDataRef* copyToData() const;
+ SkData* copyToData() const;
// reset the stream to its original state
void reset();
diff --git a/src/animator/SkDisplayPost.cpp b/src/animator/SkDisplayPost.cpp
index 17e7c761e9..e46cdbd0c7 100644
--- a/src/animator/SkDisplayPost.cpp
+++ b/src/animator/SkDisplayPost.cpp
@@ -51,13 +51,13 @@ SkPost::SkPost() : delay(0), /*initialized(SkBool(-1)), */ mode(kImmediate), fMa
}
SkPost::~SkPost() {
- for (SkData** part = fParts.begin(); part < fParts.end(); part++)
+ for (SkDataInput** part = fParts.begin(); part < fParts.end(); part++)
delete *part;
}
bool SkPost::add(SkAnimateMaker& , SkDisplayable* child) {
- SkASSERT(child && child->isData());
- SkData* part = (SkData*) child;
+ SkASSERT(child && child->isDataInput());
+ SkDataInput* part = (SkDataInput*) child;
*fParts.append() = part;
return true;
}
@@ -113,8 +113,8 @@ void SkPost::dump(SkAnimateMaker* maker) {
//for some reason the last part is id, which i don't want
//and the parts seem to be in the reverse order from the one in which we find the
//data itself
- //SkData** ptr = fParts.end();
- //SkData* data;
+ //SkDataInput** ptr = fParts.end();
+ //SkDataInput* data;
//const char* ID;
while ((name = iter.next(&type, &number)) != NULL) {
//ptr--;
@@ -190,7 +190,7 @@ bool SkPost::enable(SkAnimateMaker& maker ) {
fEvent.getMetaData().reset();
if (preserveID.size() > 0)
fEvent.setString("id", preserveID);
- for (SkData** part = fParts.begin(); part < fParts.end(); part++) {
+ for (SkDataInput** part = fParts.begin(); part < fParts.end(); part++) {
if ((*part)->add())
maker.setErrorCode(SkDisplayXMLParserError::kErrorAddingDataToPost);
}
@@ -284,7 +284,7 @@ bool SkPost::hasEnable() const {
void SkPost::onEndElement(SkAnimateMaker& maker) {
fTargetMaker = fMaker = &maker;
if (fChildHasID == false) {
- for (SkData** part = fParts.begin(); part < fParts.end(); part++)
+ for (SkDataInput** part = fParts.begin(); part < fParts.end(); part++)
delete *part;
fParts.reset();
}
diff --git a/src/animator/SkDisplayPost.h b/src/animator/SkDisplayPost.h
index 4b75b078d0..95c4042277 100644
--- a/src/animator/SkDisplayPost.h
+++ b/src/animator/SkDisplayPost.h
@@ -24,7 +24,7 @@
#include "SkMemberInfo.h"
#include "SkIntArray.h"
-class SkData;
+class SkDataInput;
class SkAnimateMaker;
class SkPost : public SkDisplayable {
@@ -60,7 +60,7 @@ protected:
SkBool8 fDirty;
private:
void findSinkID();
- friend class SkData;
+ friend class SkDataInput;
typedef SkDisplayable INHERITED;
};
diff --git a/src/animator/SkDisplayType.cpp b/src/animator/SkDisplayType.cpp
index 90fcd89837..564cd3f1b2 100644
--- a/src/animator/SkDisplayType.cpp
+++ b/src/animator/SkDisplayType.cpp
@@ -119,7 +119,7 @@ SkDisplayable* SkDisplayType::CreateInstance(SkAnimateMaker* maker, SkDisplayTyp
CASE_DRAW_NEW(Color);
CASE_NEW(CubicTo);
CASE_NEW(Dash);
- CASE_NEW(Data);
+ CASE_NEW(DataInput);
CASE_NEW(Discrete);
// displayable
// drawable
@@ -274,7 +274,7 @@ const SkMemberInfo* SkDisplayType::GetMembers(SkAnimateMaker* maker,
CASE_GET_DRAW_INFO(Color);
CASE_GET_INFO(CubicTo);
CASE_GET_INFO(Dash);
- CASE_GET_INFO(Data);
+ CASE_GET_INFO(DataInput);
CASE_GET_INFO(Discrete);
// displayable
// drawable
@@ -441,7 +441,7 @@ const TypeNames gTypeNames[] = {
DRAW_NAME("color", SkType_Color),
{ "cubicTo", SkType_CubicTo INIT_BOOL_FIELDS },
{ "dash", SkType_Dash INIT_BOOL_FIELDS },
- { "data", SkType_Data INIT_BOOL_FIELDS },
+ { "data", SkType_DataInput INIT_BOOL_FIELDS },
{ "discrete", SkType_Discrete INIT_BOOL_FIELDS },
// displayable
// drawable
@@ -634,7 +634,7 @@ bool SkDisplayType::IsDisplayable(SkAnimateMaker* , SkDisplayTypes type) {
case SkType_Color:
case SkType_CubicTo:
case SkType_Dash:
- case SkType_Data:
+ case SkType_DataInput:
case SkType_Discrete:
case SkType_Displayable:
case SkType_Drawable:
diff --git a/src/animator/SkDisplayType.h b/src/animator/SkDisplayType.h
index a29b2859e5..13ff2a1809 100644
--- a/src/animator/SkDisplayType.h
+++ b/src/animator/SkDisplayType.h
@@ -75,7 +75,7 @@ enum SkDisplayTypes {
SkType_Color,
SkType_CubicTo,
SkType_Dash,
- SkType_Data,
+ SkType_DataInput,
SkType_Discrete,
SkType_Displayable,
SkType_Drawable,
diff --git a/src/animator/SkDisplayable.h b/src/animator/SkDisplayable.h
index cbc96de30b..822f70ce36 100644
--- a/src/animator/SkDisplayable.h
+++ b/src/animator/SkDisplayable.h
@@ -96,7 +96,7 @@ public:
virtual bool setProperty(int index, SkScriptValue& );
void setReference(const SkMemberInfo* info, SkDisplayable* ref);
#ifdef SK_DEBUG
- bool isData() const { return getType() == SkType_Data; };
+ bool isDataInput() const { return getType() == SkType_DataInput; };
bool isEvent() const { return getType() == SkType_Event; }
virtual bool isMatrixPart() const { return false; }
bool isPatch() const { return getType() == SkType_3D_Patch; }
diff --git a/src/animator/SkIntArray.h b/src/animator/SkIntArray.h
index b2a49c19c0..ceffa94690 100644
--- a/src/animator/SkIntArray.h
+++ b/src/animator/SkIntArray.h
@@ -25,7 +25,7 @@
class SkActive;
class SkAnimateBase;
-class SkData;
+class SkDataInput;
class SkDisplayable;
class SkDisplayEvent;
class SkDrawable;
@@ -46,7 +46,7 @@ typedef SkIntArray(SkScalar) SkTDScalarArray;
typedef SkLongArray(SkActive*) SkTDActiveArray;
typedef SkLongArray(SkAnimateBase*) SkTDAnimateArray;
-typedef SkLongArray(SkData*) SkTDDataArray;
+typedef SkLongArray(SkDataInput*) SkTDDataArray;
typedef SkLongArray(SkDisplayable*) SkTDDisplayableArray;
typedef SkLongArray(SkDisplayEvent*) SkTDDisplayEventArray;
typedef SkLongArray(SkDrawable*) SkTDDrawableArray;
diff --git a/src/animator/SkPostParts.cpp b/src/animator/SkPostParts.cpp
index 254b17db14..01eb23c0f0 100644
--- a/src/animator/SkPostParts.cpp
+++ b/src/animator/SkPostParts.cpp
@@ -20,17 +20,17 @@
#if SK_USE_CONDENSED_INFO == 0
-const SkMemberInfo SkData::fInfo[] = {
+const SkMemberInfo SkDataInput::fInfo[] = {
SK_MEMBER_INHERITED
};
#endif
-DEFINE_GET_MEMBER(SkData);
+DEFINE_GET_MEMBER(SkDataInput);
-SkData::SkData() : fParent(NULL) {}
+SkDataInput::SkDataInput() : fParent(NULL) {}
-bool SkData::add() {
+bool SkDataInput::add() {
SkASSERT(name.size() > 0);
const char* dataName = name.c_str();
if (fInt != (int) SK_NaN32)
@@ -44,22 +44,22 @@ bool SkData::add() {
return false;
}
-void SkData::dirty() {
+void SkDataInput::dirty() {
fParent->dirty();
}
-SkDisplayable* SkData::getParent() const {
+SkDisplayable* SkDataInput::getParent() const {
return fParent;
}
-bool SkData::setParent(SkDisplayable* displayable) {
+bool SkDataInput::setParent(SkDisplayable* displayable) {
if (displayable->isPost() == false)
return true;
fParent = (SkPost*) displayable;
return false;
}
-void SkData::onEndElement(SkAnimateMaker&) {
+void SkDataInput::onEndElement(SkAnimateMaker&) {
add();
}
diff --git a/src/animator/SkPostParts.h b/src/animator/SkPostParts.h
index ef41fe5cdc..f20be561d9 100644
--- a/src/animator/SkPostParts.h
+++ b/src/animator/SkPostParts.h
@@ -22,9 +22,9 @@
class SkPost;
-class SkData: public SkInput {
- DECLARE_MEMBER_INFO(Data);
- SkData();
+class SkDataInput: public SkInput {
+ DECLARE_MEMBER_INFO(DataInput);
+ SkDataInput();
bool add();
virtual void dirty();
virtual SkDisplayable* getParent() const;
diff --git a/src/core/SkDataRef.cpp b/src/core/SkDataRef.cpp
deleted file mode 100644
index f8f8b176ea..0000000000
--- a/src/core/SkDataRef.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- Copyright 2011 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-
-#include "SkDataRef.h"
-
-SkDataRef::SkDataRef(const void* ptr, size_t size, ReleaseProc proc, void* context) {
- fPtr = ptr;
- fSize = size;
- fReleaseProc = proc;
- fReleaseProcContext = context;
-}
-
-SkDataRef::~SkDataRef() {
- if (fReleaseProc) {
- fReleaseProc(fPtr, fSize, fReleaseProcContext);
- }
-}
-
-size_t SkDataRef::copyRange(size_t offset, size_t length, void* buffer) const {
- size_t available = fSize;
- if (offset >= available || 0 == length) {
- return 0;
- }
- available -= offset;
- if (length > available) {
- length = available;
- }
- SkASSERT(length > 0);
-
- memcpy(buffer, this->bytes() + offset, length);
- return length;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-SkDataRef* SkDataRef::NewEmpty() {
- static SkDataRef* gEmptyRef;
- if (NULL == gEmptyRef) {
- gEmptyRef = new SkDataRef(NULL, 0, NULL, NULL);
- }
- gEmptyRef->ref();
- return gEmptyRef;
-}
-
-// assumes fPtr was allocated via sk_malloc
-static void sk_malloc_releaseproc(const void* ptr, size_t, void*) {
- sk_free((void*)ptr);
-}
-
-SkDataRef* SkDataRef::NewWithCopy(const void* data, size_t length) {
- if (0 == length) {
- return SkDataRef::NewEmpty();
- }
-
- void* copy = sk_malloc_throw(length); // balanced in sk_malloc_releaseproc
- memcpy(copy, data, length);
- return new SkDataRef(copy, length, sk_malloc_releaseproc, NULL);
-}
-
-SkDataRef* SkDataRef::NewWithProc(const void* data, size_t length,
- ReleaseProc proc, void* context) {
- return new SkDataRef(data, length, proc, context);
-}
-
-// assumes context is a SkDataRef
-static void sk_dataref_releaseproc(const void*, size_t, void* context) {
- SkDataRef* src = reinterpret_cast<SkDataRef*>(context);
- src->unref();
-}
-
-SkDataRef* SkDataRef::NewSubset(const SkDataRef* src, size_t offset, size_t length) {
- /*
- We could, if we wanted/need to, just make a deep copy of src's data,
- rather than referencing it. This would duplicate the storage (of the
- subset amount) but would possibly allow src to go out of scope sooner.
- */
-
- size_t available = src->size();
- if (offset >= available || 0 == length) {
- return SkDataRef::NewEmpty();
- }
- available -= offset;
- if (length > available) {
- length = available;
- }
- SkASSERT(length > 0);
-
- src->ref(); // this will be balanced in sk_dataref_releaseproc
- return new SkDataRef(src->bytes() + offset, length, sk_dataref_releaseproc,
- const_cast<SkDataRef*>(src));
-}
-
diff --git a/src/core/SkStream.cpp b/src/core/SkStream.cpp
index c0a73485c3..eb06452fa5 100644
--- a/src/core/SkStream.cpp
+++ b/src/core/SkStream.cpp
@@ -16,7 +16,7 @@
*/
#include "SkStream.h"
-#include "SkDataRef.h"
+#include "SkData.h"
#include "SkFixed.h"
#include "SkString.h"
#include "SkOSFile.h"
@@ -729,9 +729,10 @@ static void sk_free_release_proc(const void* ptr, size_t length, void*) {
sk_free((void*)ptr);
}
-SkDataRef* SkDynamicMemoryWStream::copyToData() const {
- return SkDataRef::NewWithProc(this->detach(), fBytesWritten,
- sk_free_release_proc, NULL);
+SkData* SkDynamicMemoryWStream::copyToData() const {
+ // should rewrite when we remove detach()
+ return SkData::NewWithProc(this->detach(), fBytesWritten,
+ sk_free_release_proc, NULL);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/tests/DataRefTest.cpp b/tests/DataRefTest.cpp
index 7590ebbd52..15fa9164a0 100644
--- a/tests/DataRefTest.cpp
+++ b/tests/DataRefTest.cpp
@@ -1,5 +1,5 @@
#include "Test.h"
-#include "SkDataRef.h"
+#include "SkData.h"
static void* gGlobal;
@@ -9,11 +9,11 @@ static void delete_int_proc(const void* ptr, size_t len, void* context) {
delete[] data;
}
-static void assert_len(skiatest::Reporter* reporter, SkDataRef* ref, size_t len) {
+static void assert_len(skiatest::Reporter* reporter, SkData* ref, size_t len) {
REPORTER_ASSERT(reporter, ref->size() == len);
}
-static void assert_data(skiatest::Reporter* reporter, SkDataRef* ref,
+static void assert_data(skiatest::Reporter* reporter, SkData* ref,
const void* data, size_t len) {
REPORTER_ASSERT(reporter, ref->size() == len);
REPORTER_ASSERT(reporter, !memcmp(ref->data(), data, len));
@@ -23,11 +23,11 @@ void TestDataRef(skiatest::Reporter* reporter) {
const char* str = "We the people, in order to form a more perfect union.";
const int N = 10;
- SkDataRef* r0 = SkDataRef::NewEmpty();
- SkDataRef* r1 = SkDataRef::NewWithCopy(str, strlen(str));
- SkDataRef* r2 = SkDataRef::NewWithProc(new int[N], N*sizeof(int),
+ SkData* r0 = SkData::NewEmpty();
+ SkData* r1 = SkData::NewWithCopy(str, strlen(str));
+ SkData* r2 = SkData::NewWithProc(new int[N], N*sizeof(int),
delete_int_proc, gGlobal);
- SkDataRef* r3 = SkDataRef::NewSubset(r1, 7, 6);
+ SkData* r3 = SkData::NewSubset(r1, 7, 6);
SkAutoUnref aur0(r0);
SkAutoUnref aur1(r1);
@@ -42,10 +42,10 @@ void TestDataRef(skiatest::Reporter* reporter) {
assert_data(reporter, r1, str, strlen(str));
assert_data(reporter, r3, "people", 6);
- SkDataRef* tmp = SkDataRef::NewSubset(r1, strlen(str), 10);
+ SkData* tmp = SkData::NewSubset(r1, strlen(str), 10);
assert_len(reporter, tmp, 0);
tmp->unref();
- tmp = SkDataRef::NewSubset(r1, 0, 0);
+ tmp = SkData::NewSubset(r1, 0, 0);
assert_len(reporter, tmp, 0);
tmp->unref();
}
diff --git a/tests/StreamTest.cpp b/tests/StreamTest.cpp
index 9aaa8b484f..dffec760bf 100644
--- a/tests/StreamTest.cpp
+++ b/tests/StreamTest.cpp
@@ -1,7 +1,7 @@
#include "Test.h"
#include "SkRandom.h"
#include "SkStream.h"
-#include "SkDataRef.h"
+#include "SkData.h"
#define MAX_SIZE (256 * 1024)
@@ -85,7 +85,7 @@ static void TestWStream(skiatest::Reporter* reporter) {
REPORTER_ASSERT(reporter, memcmp(dst, ds.getStream(), 100*26) == 0);
{
- SkDataRef* data = ds.copyToData();
+ SkData* data = ds.copyToData();
REPORTER_ASSERT(reporter, 100 * 26 == data->size());
REPORTER_ASSERT(reporter, memcmp(dst, data->data(), data->size()) == 0);
data->unref();