summaryrefslogtreecommitdiff
path: root/chromium/cc/paint/paint_shader.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/cc/paint/paint_shader.cc')
-rw-r--r--chromium/cc/paint/paint_shader.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/chromium/cc/paint/paint_shader.cc b/chromium/cc/paint/paint_shader.cc
index eb5a1232b9e..fe3f6ab0331 100644
--- a/chromium/cc/paint/paint_shader.cc
+++ b/chromium/cc/paint/paint_shader.cc
@@ -5,6 +5,7 @@
#include "cc/paint/paint_shader.h"
#include "base/memory/ptr_util.h"
+#include "cc/paint/paint_op_writer.h"
#include "cc/paint/paint_record.h"
#include "third_party/skia/include/core/SkPictureRecorder.h"
#include "third_party/skia/include/effects/SkGradientShader.h"
@@ -159,6 +160,29 @@ sk_sp<PaintShader> PaintShader::MakePaintRecord(
return shader;
}
+// static
+size_t PaintShader::GetSerializedSize(const PaintShader* shader) {
+ size_t bool_size = sizeof(bool);
+ if (!shader)
+ return bool_size;
+
+ return bool_size + sizeof(shader->shader_type_) + sizeof(shader->flags_) +
+ sizeof(shader->end_radius_) + sizeof(shader->start_radius_) +
+ sizeof(shader->tx_) + sizeof(shader->ty_) +
+ sizeof(shader->fallback_color_) + sizeof(shader->scaling_behavior_) +
+ bool_size + sizeof(*shader->local_matrix_) + sizeof(shader->center_) +
+ sizeof(shader->tile_) + sizeof(shader->start_point_) +
+ sizeof(shader->end_point_) + sizeof(shader->start_degrees_) +
+ sizeof(shader->end_degrees_) +
+ PaintOpWriter::GetImageSize(shader->image_) +
+ PaintOpWriter::GetImageSize(shader->image_) + bool_size +
+ PaintOpWriter::GetRecordSize(shader->record_.get()) +
+ sizeof(shader->colors_.size()) +
+ shader->colors_.size() * sizeof(SkColor) +
+ sizeof(shader->positions_.size()) +
+ shader->positions_.size() * sizeof(SkScalar);
+}
+
PaintShader::PaintShader(Type type) : shader_type_(type) {}
PaintShader::~PaintShader() = default;