• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "DMSKPTask.h"
2 #include "DMUtil.h"
3 #include "DMWriteTask.h"
4 
5 #include "SkCommandLineFlags.h"
6 #include "SkPictureRecorder.h"
7 
8 DEFINE_int32(skpMaxWidth,  1000, "Max SKPTask viewport width.");
9 DEFINE_int32(skpMaxHeight, 1000, "Max SKPTask viewport height.");
10 
11 namespace DM {
12 
SKPTask(Reporter * r,TaskRunner * tr,const SkPicture * pic,SkString filename)13 SKPTask::SKPTask(Reporter* r,
14                  TaskRunner* tr,
15                  const SkPicture* pic,
16                  SkString filename)
17     : CpuTask(r, tr)
18     , fPicture(SkRef(pic))
19     , fName(FileToTaskName(filename)) {}
20 
draw()21 void SKPTask::draw() {
22     const int width  = SkTMin(SkScalarCeilToInt(fPicture->cullRect().width()),  FLAGS_skpMaxWidth),
23               height = SkTMin(SkScalarCeilToInt(fPicture->cullRect().height()), FLAGS_skpMaxHeight);
24     SkBitmap bitmap;
25     AllocatePixels(kN32_SkColorType, width, height, &bitmap);
26     DrawPicture(*fPicture, &bitmap);
27 
28     this->spawnChild(SkNEW_ARGS(WriteTask, (*this, "SKP", bitmap)));
29 }
30 
31 }  // namespace DM
32