OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "Viewer.h" | 8 #include "Viewer.h" |
9 | 9 |
10 #include "GMSlide.h" | 10 #include "GMSlide.h" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 | 66 |
67 SkDebugf("Command line arguments: "); | 67 SkDebugf("Command line arguments: "); |
68 for (int i = 1; i < argc; ++i) { | 68 for (int i = 1; i < argc; ++i) { |
69 SkDebugf("%s ", argv[i]); | 69 SkDebugf("%s ", argv[i]); |
70 } | 70 } |
71 SkDebugf("\n"); | 71 SkDebugf("\n"); |
72 | 72 |
73 SkCommandLineFlags::Parse(argc, argv); | 73 SkCommandLineFlags::Parse(argc, argv); |
74 | 74 |
75 fWindow = Window::CreateNativeWindow(platformData); | 75 fWindow = Window::CreateNativeWindow(platformData); |
76 fWindow->attach(Window::kVulkan_BackendType, 0); | 76 fWindow->attach(Window::kVulkan_BackendType, DisplayParams()); |
77 | 77 |
78 // register callbacks | 78 // register callbacks |
79 fWindow->registerKeyFunc(on_key_handler, this); | 79 fWindow->registerKeyFunc(on_key_handler, this); |
80 fWindow->registerCharFunc(on_char_handler, this); | 80 fWindow->registerCharFunc(on_char_handler, this); |
81 fWindow->registerPaintFunc(on_paint_handler, this); | 81 fWindow->registerPaintFunc(on_paint_handler, this); |
82 | 82 |
83 // set up slides | 83 // set up slides |
84 this->initSlides(); | 84 this->initSlides(); |
85 | 85 |
86 fAnimTimer.run(); | 86 fAnimTimer.run(); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 } | 142 } |
143 } | 143 } |
144 } | 144 } |
145 | 145 |
146 | 146 |
147 Viewer::~Viewer() { | 147 Viewer::~Viewer() { |
148 fWindow->detach(); | 148 fWindow->detach(); |
149 delete fWindow; | 149 delete fWindow; |
150 } | 150 } |
151 | 151 |
152 void Viewer::setupCurrentSlide(int previousSlide) { | 152 void Viewer::updateTitle() { |
153 SkString title("Viewer: "); | 153 SkString title("Viewer: "); |
154 title.append(fSlides[fCurrentSlide]->getName()); | 154 title.append(fSlides[fCurrentSlide]->getName()); |
| 155 if (kSRGB_SkColorProfileType == fWindow->getDisplayParams().fProfileType) { |
| 156 title.append(" sRGB"); |
| 157 } |
| 158 fWindow->setTitle(title.c_str()); |
| 159 } |
| 160 |
| 161 void Viewer::setupCurrentSlide(int previousSlide) { |
| 162 this->updateTitle(); |
155 fSlides[fCurrentSlide]->load(); | 163 fSlides[fCurrentSlide]->load(); |
156 if (previousSlide >= 0) { | 164 if (previousSlide >= 0) { |
157 fSlides[previousSlide]->unload(); | 165 fSlides[previousSlide]->unload(); |
158 } | 166 } |
159 fWindow->setTitle(title.c_str()); | |
160 fWindow->inval(); | 167 fWindow->inval(); |
161 } | 168 } |
162 | 169 |
163 #define MAX_ZOOM_LEVEL 8 | 170 #define MAX_ZOOM_LEVEL 8 |
164 #define MIN_ZOOM_LEVEL -8 | 171 #define MIN_ZOOM_LEVEL -8 |
165 | 172 |
166 void Viewer::changeZoomLevel(float delta) { | 173 void Viewer::changeZoomLevel(float delta) { |
167 fZoomLevel += delta; | 174 fZoomLevel += delta; |
168 if (fZoomLevel > 0) { | 175 if (fZoomLevel > 0) { |
169 fZoomLevel = SkMinScalar(fZoomLevel, MAX_ZOOM_LEVEL); | 176 fZoomLevel = SkMinScalar(fZoomLevel, MAX_ZOOM_LEVEL); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 setupCurrentSlide(previousSlide); | 220 setupCurrentSlide(previousSlide); |
214 return true; | 221 return true; |
215 } | 222 } |
216 | 223 |
217 case Window::kLeft_Key: { | 224 case Window::kLeft_Key: { |
218 int previousSlide = fCurrentSlide; | 225 int previousSlide = fCurrentSlide; |
219 fCurrentSlide--; | 226 fCurrentSlide--; |
220 if (fCurrentSlide < 0) { | 227 if (fCurrentSlide < 0) { |
221 fCurrentSlide = fSlides.count() - 1; | 228 fCurrentSlide = fSlides.count() - 1; |
222 } | 229 } |
223 SkString title("Viewer: "); | |
224 title.append(fSlides[fCurrentSlide]->getName()); | |
225 fWindow->setTitle(title.c_str()); | |
226 setupCurrentSlide(previousSlide); | 230 setupCurrentSlide(previousSlide); |
227 return true; | 231 return true; |
228 } | 232 } |
229 | 233 |
230 case Window::kUp_Key: { | 234 case Window::kUp_Key: { |
231 this->changeZoomLevel(1.f / 32.f); | 235 this->changeZoomLevel(1.f / 32.f); |
232 fWindow->inval(); | 236 fWindow->inval(); |
233 return true; | 237 return true; |
234 } | 238 } |
235 | 239 |
236 case Window::kDown_Key: { | 240 case Window::kDown_Key: { |
237 this->changeZoomLevel(-1.f / 32.f); | 241 this->changeZoomLevel(-1.f / 32.f); |
238 fWindow->inval(); | 242 fWindow->inval(); |
239 return true; | 243 return true; |
240 } | 244 } |
241 | 245 |
242 default: | 246 default: |
243 break; | 247 break; |
244 } | 248 } |
245 } | 249 } |
246 | 250 |
247 return false; | 251 return false; |
248 } | 252 } |
249 | 253 |
250 bool Viewer::onChar(SkUnichar c, uint32_t modifiers) { | 254 bool Viewer::onChar(SkUnichar c, uint32_t modifiers) { |
251 if ('s' == c) { | 255 switch (c) { |
252 fDisplayStats = !fDisplayStats; | 256 case 's': |
253 return true; | 257 fDisplayStats = !fDisplayStats; |
| 258 return true; |
| 259 case 'c': |
| 260 DisplayParams params = fWindow->getDisplayParams(); |
| 261 params.fProfileType = (kLinear_SkColorProfileType == params.fProfile
Type) |
| 262 ? kSRGB_SkColorProfileType : kLinear_SkColorProfileType; |
| 263 fWindow->setDisplayParams(params); |
| 264 this->updateTitle(); |
| 265 fWindow->inval(); |
| 266 return true; |
254 } | 267 } |
255 | 268 |
256 return false; | 269 return false; |
257 } | 270 } |
258 | 271 |
259 void Viewer::onPaint(SkCanvas* canvas) { | 272 void Viewer::onPaint(SkCanvas* canvas) { |
260 | 273 |
261 int count = canvas->save(); | 274 int count = canvas->save(); |
262 | 275 |
263 if (fWindow->supportsContentRect()) { | 276 if (fWindow->supportsContentRect()) { |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 // Record measurements | 350 // Record measurements |
338 fMeasurements[fCurrentMeasurement++] = ms; | 351 fMeasurements[fCurrentMeasurement++] = ms; |
339 fCurrentMeasurement &= (kMeasurementCount - 1); // fast mod | 352 fCurrentMeasurement &= (kMeasurementCount - 1); // fast mod |
340 SkASSERT(fCurrentMeasurement < kMeasurementCount); | 353 SkASSERT(fCurrentMeasurement < kMeasurementCount); |
341 | 354 |
342 fAnimTimer.updateTime(); | 355 fAnimTimer.updateTime(); |
343 if (fSlides[fCurrentSlide]->animate(fAnimTimer) || fDisplayStats) { | 356 if (fSlides[fCurrentSlide]->animate(fAnimTimer) || fDisplayStats) { |
344 fWindow->inval(); | 357 fWindow->inval(); |
345 } | 358 } |
346 } | 359 } |
OLD | NEW |