// Check for: // SAVE // CLIP_RRECT // DRAW_RECT // RESTORE // where the rect entirely encloses the clip static bool check_3(SkDebugCanvas* canvas, int curCommand) { if (SAVE != canvas->getDrawCommandAt(curCommand)->getType() || canvas->getSize() <= curCommand+4 || CLIP_RRECT != canvas->getDrawCommandAt(curCommand+1)->getType() || DRAW_RECT != canvas->getDrawCommandAt(curCommand+2)->getType() || RESTORE != canvas->getDrawCommandAt(curCommand+3)->getType()) { return false; } SkClipRRectCommand* crr = (SkClipRRectCommand*) canvas->getDrawCommandAt(curCommand+1); SkDrawRectCommand* dr = (SkDrawRectCommand*) canvas->getDrawCommandAt(curCommand+2); if (SkRegion::kIntersect_Op != crr->op()) { return false; } return dr->rect().contains(crr->rrect().rect()); }
// Check for: // SAVE // CLIP_RRECT // DRAW_RECT // RESTORE // where the rect entirely encloses the clip static bool check_3(SkDebugCanvas* canvas, int curCommand) { if (SkDrawCommand::kSave_OpType != canvas->getDrawCommandAt(curCommand)->getType() || canvas->getSize() <= curCommand+4 || SkDrawCommand::kClipRRect_OpType != canvas->getDrawCommandAt(curCommand+1)->getType() || SkDrawCommand::kDrawRect_OpType != canvas->getDrawCommandAt(curCommand+2)->getType() || SkDrawCommand::kRestore_OpType != canvas->getDrawCommandAt(curCommand+3)->getType()) { return false; } SkClipRRectCommand* crr = (SkClipRRectCommand*) canvas->getDrawCommandAt(curCommand+1); SkDrawRectCommand* dr = (SkDrawRectCommand*) canvas->getDrawCommandAt(curCommand+2); if (SkRegion::kIntersect_Op != crr->op()) { return false; } return dr->rect().contains(crr->rrect().rect()); }