Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(224)

Side by Side Diff: sky/engine/platform/graphics/GraphicsContextRecorder.cpp

Issue 812543002: Update from https://crrev.com/308331 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 { 93 {
94 SkMemoryStream stream(data, size); 94 SkMemoryStream stream(data, size);
95 RefPtr<SkPicture> picture = adoptRef(SkPicture::CreateFromStream(&stream, de codeBitmap)); 95 RefPtr<SkPicture> picture = adoptRef(SkPicture::CreateFromStream(&stream, de codeBitmap));
96 if (!picture) 96 if (!picture)
97 return nullptr; 97 return nullptr;
98 return adoptRef(new GraphicsContextSnapshot(picture)); 98 return adoptRef(new GraphicsContextSnapshot(picture));
99 } 99 }
100 100
101 PassOwnPtr<Vector<char> > GraphicsContextSnapshot::replay(unsigned fromStep, uns igned toStep, double scale) const 101 PassOwnPtr<Vector<char> > GraphicsContextSnapshot::replay(unsigned fromStep, uns igned toStep, double scale) const
102 { 102 {
103 int width = ceil(scale * m_picture->width()); 103 const SkIRect bounds = m_picture->cullRect().roundOut();
104 int height = ceil(scale * m_picture->height());
105 SkBitmap bitmap; 104 SkBitmap bitmap;
106 bitmap.allocPixels(SkImageInfo::MakeN32Premul(width, height)); 105 bitmap.allocPixels(SkImageInfo::MakeN32Premul(bounds.width(), bounds.height( )));
107 { 106 {
108 ReplayingCanvas canvas(bitmap, fromStep, toStep); 107 ReplayingCanvas canvas(bitmap, fromStep, toStep);
109 canvas.scale(scale, scale); 108 canvas.scale(scale, scale);
110 canvas.resetStepCount(); 109 canvas.resetStepCount();
111 m_picture->draw(&canvas, &canvas); 110 m_picture->draw(&canvas, &canvas);
112 } 111 }
113 OwnPtr<Vector<char> > base64Data = adoptPtr(new Vector<char>()); 112 OwnPtr<Vector<char> > base64Data = adoptPtr(new Vector<char>());
114 Vector<char> encodedImage; 113 Vector<char> encodedImage;
115 if (!PNGImageEncoder::encode(bitmap, reinterpret_cast<Vector<unsigned char>* >(&encodedImage))) 114 if (!PNGImageEncoder::encode(bitmap, reinterpret_cast<Vector<unsigned char>* >(&encodedImage)))
116 return nullptr; 115 return nullptr;
117 base64Encode(encodedImage, *base64Data); 116 base64Encode(encodedImage, *base64Data);
118 return base64Data.release(); 117 return base64Data.release();
119 } 118 }
120 119
121 PassOwnPtr<GraphicsContextSnapshot::Timings> GraphicsContextSnapshot::profile(un signed minRepeatCount, double minDuration) const 120 PassOwnPtr<GraphicsContextSnapshot::Timings> GraphicsContextSnapshot::profile(un signed minRepeatCount, double minDuration) const
122 { 121 {
123 OwnPtr<GraphicsContextSnapshot::Timings> timings = adoptPtr(new GraphicsCont extSnapshot::Timings()); 122 OwnPtr<GraphicsContextSnapshot::Timings> timings = adoptPtr(new GraphicsCont extSnapshot::Timings());
124 timings->reserveCapacity(minRepeatCount); 123 timings->reserveCapacity(minRepeatCount);
124 const SkIRect bounds = m_picture->cullRect().roundOut();
125 SkBitmap bitmap; 125 SkBitmap bitmap;
126 bitmap.allocPixels(SkImageInfo::MakeN32Premul(m_picture->width(), m_picture- >height())); 126 bitmap.allocPixels(SkImageInfo::MakeN32Premul(bounds.width(), bounds.height( )));
127 OwnPtr<ProfilingCanvas> canvas = adoptPtr(new ProfilingCanvas(bitmap)); 127 OwnPtr<ProfilingCanvas> canvas = adoptPtr(new ProfilingCanvas(bitmap));
128 128
129 double now = WTF::monotonicallyIncreasingTime(); 129 double now = WTF::monotonicallyIncreasingTime();
130 double stopTime = now + minDuration; 130 double stopTime = now + minDuration;
131 for (unsigned step = 0; step < minRepeatCount || now < stopTime; ++step) { 131 for (unsigned step = 0; step < minRepeatCount || now < stopTime; ++step) {
132 timings->append(Vector<double>()); 132 timings->append(Vector<double>());
133 Vector<double>* currentTimings = &timings->last(); 133 Vector<double>* currentTimings = &timings->last();
134 if (timings->size() > 1) 134 if (timings->size() > 1)
135 currentTimings->reserveCapacity(timings->begin()->size()); 135 currentTimings->reserveCapacity(timings->begin()->size());
136 if (step) 136 if (step)
137 canvas = adoptPtr(new ProfilingCanvas(bitmap)); 137 canvas = adoptPtr(new ProfilingCanvas(bitmap));
138 canvas->setTimings(currentTimings); 138 canvas->setTimings(currentTimings);
139 m_picture->draw(canvas.get()); 139 m_picture->draw(canvas.get());
140 now = WTF::monotonicallyIncreasingTime(); 140 now = WTF::monotonicallyIncreasingTime();
141 } 141 }
142 return timings.release(); 142 return timings.release();
143 } 143 }
144 144
145 PassRefPtr<JSONArray> GraphicsContextSnapshot::snapshotCommandLog() const 145 PassRefPtr<JSONArray> GraphicsContextSnapshot::snapshotCommandLog() const
146 { 146 {
147 LoggingCanvas canvas(m_picture->width(), m_picture->height()); 147 const SkIRect bounds = m_picture->cullRect().roundOut();
148 LoggingCanvas canvas(bounds.width(), bounds.height());
148 m_picture->draw(&canvas); 149 m_picture->draw(&canvas);
149 return canvas.log(); 150 return canvas.log();
150 } 151 }
151 152
152 } // namespace blink 153 } // namespace blink
OLDNEW
« no previous file with comments | « sky/engine/platform/graphics/GraphicsContextCullSaver.h ('k') | sky/engine/platform/graphics/InterceptingCanvas.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698