Lines Matching refs:reader
26 static const SkRect* get_rect_ptr(SkReadBuffer* reader, SkRect* storage) {
27 if (reader->readBool()) {
28 reader->readRect(storage);
41 SkReadBuffer reader(fPictureData->opData()->bytes(),
49 while (!reader.eof() && reader.isValid()) {
54 fCurOffset = reader.offset();
56 uint32_t bits = reader.readInt();
60 size = reader.readInt();
63 if (!reader.validate(size > 0 && op > UNUSED && op <= LAST_DRAWTYPE_ENUM)) {
67 this->handleOp(&reader, (DrawType)op, size, canvas, initialMatrix);
70 // need to propagate invalid state to the parent reader
72 buffer->validate(reader.isValid());
76 static void validate_offsetToRestore(SkReadBuffer* reader, size_t offsetToRestore) {
78 reader->validate(SkIsAlign4(offsetToRestore) && offsetToRestore >= reader->offset());
82 static bool do_clip_op(SkReadBuffer* reader, SkCanvas* canvas, SkRegion::Op op,
92 SkASSERT(reader->isVersionLT(SkPicturePriv::kNoExpandingClipOps));
98 SkASSERT(reader->isVersionLT(SkPicturePriv::kNoExpandingClipOps));
103 void SkPicturePlayback::handleOp(SkReadBuffer* reader,
113 reader->skip(size - 4);
119 const SkPath& path = fPictureData->getPath(reader);
120 uint32_t packed = reader->readInt();
121 SkRegion::Op rgnOp = ClipParams_unpackRegionOp(reader, packed);
123 size_t offsetToRestore = reader->readInt();
124 validate_offsetToRestore(reader, offsetToRestore);
125 BREAK_ON_READ_ERROR(reader);
128 if (do_clip_op(reader, canvas, rgnOp, &clipOp)) {
132 reader->skip(offsetToRestore - reader->offset());
137 reader->readRegion(®ion);
138 uint32_t packed = reader->readInt();
139 SkRegion::Op rgnOp = ClipParams_unpackRegionOp(reader, packed);
140 size_t offsetToRestore = reader->readInt();
141 validate_offsetToRestore(reader, offsetToRestore);
142 BREAK_ON_READ_ERROR(reader);
145 if (do_clip_op(reader, canvas, rgnOp, &clipOp)) {
149 reader->skip(offsetToRestore - reader->offset());
154 reader->readRect(&rect);
155 uint32_t packed = reader->readInt();
156 SkRegion::Op rgnOp = ClipParams_unpackRegionOp(reader, packed);
158 size_t offsetToRestore = reader->readInt();
159 validate_offsetToRestore(reader, offsetToRestore);
160 BREAK_ON_READ_ERROR(reader);
163 if (do_clip_op(reader, canvas, rgnOp, &clipOp)) {
167 reader->skip(offsetToRestore - reader->offset());
172 reader->readRRect(&rrect);
173 uint32_t packed = reader->readInt();
174 SkRegion::Op rgnOp = ClipParams_unpackRegionOp(reader, packed);
176 size_t offsetToRestore = reader->readInt();
177 validate_offsetToRestore(reader, offsetToRestore);
178 BREAK_ON_READ_ERROR(reader);
181 if (do_clip_op(reader, canvas, rgnOp, &clipOp)) {
185 reader->skip(offsetToRestore - reader->offset());
189 const SkPaint& paint = fPictureData->requiredPaint(reader);
192 SkClipOp clipOp = reader->checkRange(SkClipOp::kDifference, SkClipOp::kIntersect);
193 BREAK_ON_READ_ERROR(reader);
207 reader->readMatrix(&matrix);
208 BREAK_ON_READ_ERROR(reader);
214 const SkScalar* colMaj = reader->skipT<SkScalar>(16);
215 BREAK_ON_READ_ERROR(reader);
221 reader->readRect(&rect);
223 reader->readString(&key);
224 sk_sp<SkData> data = reader->readByteArrayAsData();
225 BREAK_ON_READ_ERROR(reader);
231 const SkPaint& paint = fPictureData->requiredPaint(reader);
233 reader->readRect(&rect);
234 SkScalar startAngle = reader->readScalar();
235 SkScalar sweepAngle = reader->readScalar();
236 int useCenter = reader->readInt();
237 BREAK_ON_READ_ERROR(reader);
242 const SkPaint* paint = fPictureData->optionalPaint(reader);
243 const SkImage* atlas = fPictureData->getImage(reader);
244 const uint32_t flags = reader->readUInt();
245 const int count = reader->readUInt();
246 const SkRSXform* xform = (const SkRSXform*)reader->skip(count, sizeof(SkRSXform));
247 const SkRect* tex = (const SkRect*)reader->skip(count, sizeof(SkRect));
251 colors = (const SkColor*)reader->skip(count, sizeof(SkColor));
252 mode = (SkBlendMode)reader->readUInt();
256 cull = (const SkRect*)reader->skip(sizeof(SkRect));
258 BREAK_ON_READ_ERROR(reader);
262 sampling = reader->readSampling();
263 BREAK_ON_READ_ERROR(reader);
268 auto c = reader->readInt();
269 BREAK_ON_READ_ERROR(reader);
275 size_t length = reader->readInt();
276 (void)reader->skip(length);
280 auto* d = fPictureData->getDrawable(reader);
281 BREAK_ON_READ_ERROR(reader);
287 reader->readMatrix(&matrix);
288 SkDrawable* drawable = fPictureData->getDrawable(reader);
289 BREAK_ON_READ_ERROR(reader);
294 const SkPaint& paint = fPictureData->requiredPaint(reader);
296 reader->readRRect(&outer);
297 reader->readRRect(&inner);
298 BREAK_ON_READ_ERROR(reader);
304 reader->readRect(&rect);
305 SkCanvas::QuadAAFlags aaFlags = static_cast<SkCanvas::QuadAAFlags>(reader->read32());
307 reader->readColor4f(&color);
308 SkBlendMode blend = static_cast<SkBlendMode>(reader->read32());
309 bool hasClip = reader->readInt();
312 clip = (SkPoint*) reader->skip(4, sizeof(SkPoint));
314 BREAK_ON_READ_ERROR(reader);
323 int cnt = reader->readInt();
324 if (!reader->validate(cnt >= 0)) {
327 const SkPaint* paint = fPictureData->optionalPaint(reader);
331 sampling = reader->readSampling();
337 reader->checkRange(SkCanvas::kStrict_SrcRectConstraint,
340 if (!reader->validate(SkSafeMath::Mul(cnt, kEntryReadSize) <= reader->available())) {
349 for (int i = 0; i < cnt && reader->isValid(); ++i) {
350 set[i].fImage = sk_ref_sp(fPictureData->getImage(reader));
351 reader->readRect(&set[i].fSrcRect);
352 reader->readRect(&set[i].fDstRect);
353 set[i].fMatrixIndex = reader->readInt();
354 set[i].fAlpha = reader->readScalar();
355 set[i].fAAFlags = reader->readUInt();
356 set[i].fHasClip = reader->readInt();
364 int dstClipCount = reader->readInt();
366 if (!reader->validate(expectedClips <= dstClipCount)) {
370 dstClips = (SkPoint*) reader->skip(dstClipCount, sizeof(SkPoint));
372 // Not enough bytes remaining so the reader has been invalidated
376 int matrixCount = reader->readInt();
377 if (!reader->validate((maxMatrixIndex + 1) <= matrixCount) ||
378 !reader->validate(
379 SkSafeMath::Mul(matrixCount, kMatrixSize) <= reader->available())) {
385 for (int i = 0; i < matrixCount && reader->isValid(); ++i) {
386 reader->readMatrix(&matrices.push_back());
388 BREAK_ON_READ_ERROR(reader);
394 const SkPaint* paint = fPictureData->optionalPaint(reader);
395 const SkImage* image = fPictureData->getImage(reader);
397 reader->readPoint(&loc);
398 BREAK_ON_READ_ERROR(reader);
405 const SkPaint* paint = fPictureData->optionalPaint(reader);
406 const SkImage* image = fPictureData->getImage(reader);
408 reader->readPoint(&loc);
409 SkSamplingOptions sampling = reader->readSampling();
410 BREAK_ON_READ_ERROR(reader);
415 const SkPaint* paint = fPictureData->optionalPaint(reader);
416 const SkImage* image = fPictureData->getImage(reader);
418 (void)SkCanvasPriv::ReadLattice(*reader, &lattice);
419 const SkRect* dst = reader->skipT<SkRect>();
420 BREAK_ON_READ_ERROR(reader);
425 const SkPaint* paint = fPictureData->optionalPaint(reader);
426 const SkImage* image = fPictureData->getImage(reader);
428 (void)SkCanvasPriv::ReadLattice(*reader, &lattice);
429 const SkRect* dst = reader->skipT<SkRect>();
430 SkFilterMode filter = reader->read32LE(SkFilterMode::kLinear);
431 BREAK_ON_READ_ERROR(reader);
436 const SkPaint* paint = fPictureData->optionalPaint(reader);
437 const SkImage* image = fPictureData->getImage(reader);
439 reader->readIRect(¢er);
441 reader->readRect(&dst);
442 BREAK_ON_READ_ERROR(reader);
447 const SkPaint* paint = fPictureData->optionalPaint(reader);
448 const SkImage* image = fPictureData->getImage(reader);
450 const SkRect* src = get_rect_ptr(reader, &storage); // may be null
452 reader->readRect(&dst); // required
457 constraint = reader->checkRange(SkCanvas::kStrict_SrcRectConstraint,
460 BREAK_ON_READ_ERROR(reader);
470 const SkPaint* paint = fPictureData->optionalPaint(reader);
471 const SkImage* image = fPictureData->getImage(reader);
472 SkRect src = reader->readRect();
473 SkRect dst = reader->readRect();
474 SkSamplingOptions sampling = reader->readSampling();
475 auto constraint = reader->read32LE(SkCanvas::kFast_SrcRectConstraint);
476 BREAK_ON_READ_ERROR(reader);
481 const SkPaint& paint = fPictureData->requiredPaint(reader);
483 reader->readRect(&rect);
484 BREAK_ON_READ_ERROR(reader);
489 const SkPaint& paint = fPictureData->requiredPaint(reader);
490 BREAK_ON_READ_ERROR(reader);
495 const SkPaint& paint = fPictureData->requiredPaint(reader);
496 BREAK_ON_READ_ERROR(reader);
501 const SkPaint& paint = fPictureData->requiredPaint(reader);
503 const SkPoint* cubics = (const SkPoint*)reader->skip(SkPatchUtils::kNumCtrlPts,
505 uint32_t flag = reader->readInt();
508 colors = (const SkColor*)reader->skip(SkPatchUtils::kNumCorners, sizeof(SkColor));
512 texCoords = (const SkPoint*)reader->skip(SkPatchUtils::kNumCorners,
517 unsigned mode = reader->readInt();
522 BREAK_ON_READ_ERROR(reader);
527 const SkPaint& paint = fPictureData->requiredPaint(reader);
528 const auto& path = fPictureData->getPath(reader);
529 BREAK_ON_READ_ERROR(reader);
534 const auto* pic = fPictureData->getPicture(reader);
535 BREAK_ON_READ_ERROR(reader);
540 const SkPaint* paint = fPictureData->optionalPaint(reader);
542 reader->readMatrix(&matrix);
543 const SkPicture* pic = fPictureData->getPicture(reader);
544 BREAK_ON_READ_ERROR(reader);
549 const SkPaint& paint = fPictureData->requiredPaint(reader);
550 SkCanvas::PointMode mode = reader->checkRange(SkCanvas::kPoints_PointMode,
552 size_t count = reader->readInt();
553 const SkPoint* pts = (const SkPoint*)reader->skip(count, sizeof(SkPoint));
554 BREAK_ON_READ_ERROR(reader);
559 const SkPaint& paint = fPictureData->requiredPaint(reader);
561 reader->readRect(&rect);
562 BREAK_ON_READ_ERROR(reader);
567 const SkPaint& paint = fPictureData->requiredPaint(reader);
569 reader->readRegion(®ion);
570 BREAK_ON_READ_ERROR(reader);
575 const SkPaint& paint = fPictureData->requiredPaint(reader);
577 reader->readRRect(&rrect);
578 BREAK_ON_READ_ERROR(reader);
583 const auto& path = fPictureData->getPath(reader);
585 reader->readPoint3(&rec.fZPlaneParams);
586 reader->readPoint3(&rec.fLightPos);
587 rec.fLightRadius = reader->readScalar();
588 rec.fAmbientColor = reader->read32();
589 rec.fSpotColor = reader->read32();
590 rec.fFlags = reader->read32();
591 BREAK_ON_READ_ERROR(reader);
596 const SkPaint& paint = fPictureData->requiredPaint(reader);
597 const SkTextBlob* blob = fPictureData->getTextBlob(reader);
598 SkScalar x = reader->readScalar();
599 SkScalar y = reader->readScalar();
600 BREAK_ON_READ_ERROR(reader);
605 const SkPaint& paint = fPictureData->requiredPaint(reader);
606 const SkVertices* vertices = fPictureData->getVertices(reader);
607 const int boneCount = reader->readInt();
608 (void)reader->skip(boneCount, sizeof(SkVertices_DeprecatedBone));
609 SkBlendMode bmode = reader->read32LE(SkBlendMode::kLastMode);
610 BREAK_ON_READ_ERROR(reader);
618 reader->readString(&name);
619 BREAK_ON_READ_ERROR(reader);
626 auto deg = reader->readScalar();
633 uint32_t flags = reader->readInt();
637 reader->readRect(&storage);
644 const uint32_t flatFlags = reader->readInt();
647 reader->readRect(&bounds);
651 rec.fPaint = &fPictureData->requiredPaint(reader);
654 const SkPaint& paint = fPictureData->requiredPaint(reader);
658 rec.fSaveLayerFlags = reader->readInt();
661 (void)fPictureData->getImage(reader);
665 reader->readMatrix(&clipMatrix_ignored);
667 if (!reader->isVersionLT(SkPicturePriv::Version::kBackdropScaleFactor) &&
669 SkCanvasPriv::SetBackdropScaleFactor(&rec, reader->readScalar());
671 BREAK_ON_READ_ERROR(reader);
676 SkScalar sx = reader->readScalar();
677 SkScalar sy = reader->readScalar();
682 reader->read(&m);
687 reader->readMatrix(&matrix);
691 SkScalar sx = reader->readScalar();
692 SkScalar sy = reader->readScalar();
696 SkScalar dx = reader->readScalar();
697 SkScalar dy = reader->readScalar();
701 reader->validate(false); // unknown op