aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkTextBlob.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/SkTextBlob.cpp')
-rw-r--r--src/core/SkTextBlob.cpp39
1 files changed, 17 insertions, 22 deletions
diff --git a/src/core/SkTextBlob.cpp b/src/core/SkTextBlob.cpp
index 6d636ce4b6..dd2f7bd1dd 100644
--- a/src/core/SkTextBlob.cpp
+++ b/src/core/SkTextBlob.cpp
@@ -10,6 +10,7 @@
#include "SkPaintPriv.h"
#include "SkReadBuffer.h"
#include "SkSafeMath.h"
+#include "SkTextBlobPriv.h"
#include "SkTypeface.h"
#include "SkWriteBuffer.h"
@@ -762,11 +763,11 @@ sk_sp<SkTextBlob> SkTextBlobBuilder::make() {
///////////////////////////////////////////////////////////////////////////////////////////////////
-void SkTextBlob::flatten(SkWriteBuffer& buffer) const {
- buffer.writeRect(fBounds);
+void SkTextBlobPriv::Flatten(const SkTextBlob& blob, SkWriteBuffer& buffer) {
+ buffer.writeRect(blob.fBounds);
SkPaint runPaint;
- SkTextBlobRunIterator it(this);
+ SkTextBlobRunIterator it(&blob);
while (!it.done()) {
SkASSERT(it.glyphCount() > 0);
@@ -789,7 +790,8 @@ void SkTextBlob::flatten(SkWriteBuffer& buffer) const {
buffer.writeByteArray(it.glyphs(), it.glyphCount() * sizeof(uint16_t));
buffer.writeByteArray(it.pos(),
- it.glyphCount() * sizeof(SkScalar) * ScalarsPerGlyph(it.positioning()));
+ it.glyphCount() * sizeof(SkScalar) *
+ SkTextBlob::ScalarsPerGlyph(it.positioning()));
if (pe.extended) {
buffer.writeByteArray(it.clusters(), sizeof(uint32_t) * it.glyphCount());
buffer.writeByteArray(it.text(), it.textSize());
@@ -802,7 +804,7 @@ void SkTextBlob::flatten(SkWriteBuffer& buffer) const {
buffer.write32(0);
}
-sk_sp<SkTextBlob> SkTextBlob::MakeFromBuffer(SkReadBuffer& reader) {
+sk_sp<SkTextBlob> SkTextBlobPriv::MakeFromBuffer(SkReadBuffer& reader) {
SkRect bounds;
reader.readRect(&bounds);
@@ -817,8 +819,8 @@ sk_sp<SkTextBlob> SkTextBlob::MakeFromBuffer(SkReadBuffer& reader) {
PositioningAndExtended pe;
pe.intValue = reader.read32();
- GlyphPositioning pos = pe.positioning;
- if (glyphCount <= 0 || pos > kFull_Positioning) {
+ SkTextBlob::GlyphPositioning pos = pe.positioning;
+ if (glyphCount <= 0 || pos > SkTextBlob::kFull_Positioning) {
return nullptr;
}
int textSize = pe.extended ? reader.read32() : 0;
@@ -835,7 +837,8 @@ sk_sp<SkTextBlob> SkTextBlob::MakeFromBuffer(SkReadBuffer& reader) {
// a run before allocating it.
const size_t glyphSize = safe.mul(glyphCount, sizeof(uint16_t)),
posSize =
- safe.mul(glyphCount, safe.mul(sizeof(SkScalar), ScalarsPerGlyph(pos))),
+ safe.mul(glyphCount, safe.mul(sizeof(SkScalar),
+ SkTextBlob::ScalarsPerGlyph(pos))),
clusterSize = pe.extended ? safe.mul(glyphCount, sizeof(uint32_t)) : 0;
const size_t totalSize =
safe.add(safe.add(glyphSize, posSize), safe.add(clusterSize, textSize));
@@ -846,15 +849,15 @@ sk_sp<SkTextBlob> SkTextBlob::MakeFromBuffer(SkReadBuffer& reader) {
const SkTextBlobBuilder::RunBuffer* buf = nullptr;
switch (pos) {
- case kDefault_Positioning:
+ case SkTextBlob::kDefault_Positioning:
buf = &blobBuilder.allocRunText(font, glyphCount, offset.x(), offset.y(),
textSize, SkString(), &bounds);
break;
- case kHorizontal_Positioning:
+ case SkTextBlob::kHorizontal_Positioning:
buf = &blobBuilder.allocRunTextPosH(font, glyphCount, offset.y(),
textSize, SkString(), &bounds);
break;
- case kFull_Positioning:
+ case SkTextBlob::kFull_Positioning:
buf = &blobBuilder.allocRunTextPos(font, glyphCount, textSize, SkString(), &bounds);
break;
default:
@@ -886,7 +889,7 @@ sk_sp<SkTextBlob> SkTextBlob::MakeFromBuffer(SkReadBuffer& reader) {
sk_sp<SkData> SkTextBlob::serialize(const SkSerialProcs& procs) const {
SkBinaryWriteBuffer buffer;
buffer.setSerialProcs(procs);
- this->flatten(buffer);
+ SkTextBlobPriv::Flatten(*this, buffer);
size_t total = buffer.bytesWritten();
sk_sp<SkData> data = SkData::MakeUninitialized(total);
@@ -894,19 +897,11 @@ sk_sp<SkData> SkTextBlob::serialize(const SkSerialProcs& procs) const {
return data;
}
-sk_sp<SkData> SkTextBlob::serialize() const {
- return this->serialize(SkSerialProcs());
-}
-
sk_sp<SkTextBlob> SkTextBlob::Deserialize(const void* data, size_t length,
const SkDeserialProcs& procs) {
SkReadBuffer buffer(data, length);
buffer.setDeserialProcs(procs);
- return SkTextBlob::MakeFromBuffer(buffer);
-}
-
-sk_sp<SkTextBlob> SkTextBlob::Deserialize(const void* data, size_t length) {
- return SkTextBlob::Deserialize(data, length, SkDeserialProcs());
+ return SkTextBlobPriv::MakeFromBuffer(buffer);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -936,7 +931,7 @@ sk_sp<SkData> SkTextBlob::serialize(SkTypefaceCatalogerProc proc, void* ctx) con
size_t SkTextBlob::serialize(const SkSerialProcs& procs, void* memory, size_t memory_size) const {
SkBinaryWriteBuffer buffer(memory, memory_size);
buffer.setSerialProcs(procs);
- this->flatten(buffer);
+ SkTextBlobPriv::Flatten(*this, buffer);
return buffer.usingInitialStorage() ? buffer.bytesWritten() : 0u;
}