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

Side by Side Diff: src/views/SkView.cpp

Issue 1316233002: Style Change: NULL->nullptr (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2015-08-27 (Thursday) 10:25:06 EDT Created 5 years, 3 months 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
« no previous file with comments | « src/views/SkTagList.cpp ('k') | src/views/SkViewInflate.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 #include "SkView.h" 8 #include "SkView.h"
9 #include "SkCanvas.h" 9 #include "SkCanvas.h"
10 10
11 //////////////////////////////////////////////////////////////////////// 11 ////////////////////////////////////////////////////////////////////////
12 12
13 SkView::SkView(uint32_t flags) : fFlags(SkToU8(flags)) 13 SkView::SkView(uint32_t flags) : fFlags(SkToU8(flags))
14 { 14 {
15 fWidth = fHeight = 0; 15 fWidth = fHeight = 0;
16 fLoc.set(0, 0); 16 fLoc.set(0, 0);
17 fParent = fFirstChild = fNextSibling = fPrevSibling = NULL; 17 fParent = fFirstChild = fNextSibling = fPrevSibling = nullptr;
18 fMatrix.setIdentity(); 18 fMatrix.setIdentity();
19 fContainsFocus = 0; 19 fContainsFocus = 0;
20 } 20 }
21 21
22 SkView::~SkView() 22 SkView::~SkView()
23 { 23 {
24 this->detachAllChildren(); 24 this->detachAllChildren();
25 } 25 }
26 26
27 void SkView::setFlags(uint32_t flags) 27 void SkView::setFlags(uint32_t flags)
28 { 28 {
29 SkASSERT((flags & ~kAllFlagMasks) == 0); 29 SkASSERT((flags & ~kAllFlagMasks) == 0);
30 30
31 uint32_t diff = fFlags ^ flags; 31 uint32_t diff = fFlags ^ flags;
32 32
33 if (diff & kVisible_Mask) 33 if (diff & kVisible_Mask)
34 this->inval(NULL); 34 this->inval(nullptr);
35 35
36 fFlags = SkToU8(flags); 36 fFlags = SkToU8(flags);
37 37
38 if (diff & kVisible_Mask) 38 if (diff & kVisible_Mask)
39 { 39 {
40 this->inval(NULL); 40 this->inval(nullptr);
41 } 41 }
42 } 42 }
43 43
44 void SkView::setVisibleP(bool pred) 44 void SkView::setVisibleP(bool pred)
45 { 45 {
46 this->setFlags(SkSetClearShift(fFlags, pred, kVisible_Shift)); 46 this->setFlags(SkSetClearShift(fFlags, pred, kVisible_Shift));
47 } 47 }
48 48
49 void SkView::setEnabledP(bool pred) 49 void SkView::setEnabledP(bool pred)
50 { 50 {
51 this->setFlags(SkSetClearShift(fFlags, pred, kEnabled_Shift)); 51 this->setFlags(SkSetClearShift(fFlags, pred, kEnabled_Shift));
52 } 52 }
53 53
54 void SkView::setFocusableP(bool pred) 54 void SkView::setFocusableP(bool pred)
55 { 55 {
56 this->setFlags(SkSetClearShift(fFlags, pred, kFocusable_Shift)); 56 this->setFlags(SkSetClearShift(fFlags, pred, kFocusable_Shift));
57 } 57 }
58 58
59 void SkView::setClipToBounds(bool pred) { 59 void SkView::setClipToBounds(bool pred) {
60 this->setFlags(SkSetClearShift(fFlags, !pred, kNoClip_Shift)); 60 this->setFlags(SkSetClearShift(fFlags, !pred, kNoClip_Shift));
61 } 61 }
62 62
63 void SkView::setSize(SkScalar width, SkScalar height) 63 void SkView::setSize(SkScalar width, SkScalar height)
64 { 64 {
65 width = SkMaxScalar(0, width); 65 width = SkMaxScalar(0, width);
66 height = SkMaxScalar(0, height); 66 height = SkMaxScalar(0, height);
67 67
68 if (fWidth != width || fHeight != height) 68 if (fWidth != width || fHeight != height)
69 { 69 {
70 this->inval(NULL); 70 this->inval(nullptr);
71 fWidth = width; 71 fWidth = width;
72 fHeight = height; 72 fHeight = height;
73 this->inval(NULL); 73 this->inval(nullptr);
74 this->onSizeChange(); 74 this->onSizeChange();
75 this->invokeLayout(); 75 this->invokeLayout();
76 } 76 }
77 } 77 }
78 78
79 void SkView::setLoc(SkScalar x, SkScalar y) 79 void SkView::setLoc(SkScalar x, SkScalar y)
80 { 80 {
81 if (fLoc.fX != x || fLoc.fY != y) 81 if (fLoc.fX != x || fLoc.fY != y)
82 { 82 {
83 this->inval(NULL); 83 this->inval(nullptr);
84 fLoc.set(x, y); 84 fLoc.set(x, y);
85 this->inval(NULL); 85 this->inval(nullptr);
86 } 86 }
87 } 87 }
88 88
89 void SkView::offset(SkScalar dx, SkScalar dy) 89 void SkView::offset(SkScalar dx, SkScalar dy)
90 { 90 {
91 if (dx || dy) 91 if (dx || dy)
92 this->setLoc(fLoc.fX + dx, fLoc.fY + dy); 92 this->setLoc(fLoc.fX + dx, fLoc.fY + dy);
93 } 93 }
94 94
95 void SkView::setLocalMatrix(const SkMatrix& matrix) 95 void SkView::setLocalMatrix(const SkMatrix& matrix)
96 { 96 {
97 this->inval(NULL); 97 this->inval(nullptr);
98 fMatrix = matrix; 98 fMatrix = matrix;
99 this->inval(NULL); 99 this->inval(nullptr);
100 } 100 }
101 101
102 void SkView::draw(SkCanvas* canvas) 102 void SkView::draw(SkCanvas* canvas)
103 { 103 {
104 if (fWidth && fHeight && this->isVisible()) 104 if (fWidth && fHeight && this->isVisible())
105 { 105 {
106 SkRect r; 106 SkRect r;
107 r.set(fLoc.fX, fLoc.fY, fLoc.fX + fWidth, fLoc.fY + fHeight); 107 r.set(fLoc.fX, fLoc.fY, fLoc.fX + fWidth, fLoc.fY + fHeight);
108 if (this->isClipToBounds() && 108 if (this->isClipToBounds() &&
109 canvas->quickReject(r)) { 109 canvas->quickReject(r)) {
(...skipping 19 matching lines...) Expand all
129 129
130 if (fParent) { 130 if (fParent) {
131 fParent->afterChild(this, canvas); 131 fParent->afterChild(this, canvas);
132 } 132 }
133 133
134 B2FIter iter(this); 134 B2FIter iter(this);
135 SkView* child; 135 SkView* child;
136 136
137 SkCanvas* childCanvas = this->beforeChildren(canvas); 137 SkCanvas* childCanvas = this->beforeChildren(canvas);
138 138
139 while ((child = iter.next()) != NULL) 139 while ((child = iter.next()) != nullptr)
140 child->draw(childCanvas); 140 child->draw(childCanvas);
141 141
142 this->afterChildren(canvas); 142 this->afterChildren(canvas);
143 } 143 }
144 } 144 }
145 145
146 void SkView::inval(SkRect* rect) { 146 void SkView::inval(SkRect* rect) {
147 SkView* view = this; 147 SkView* view = this;
148 SkRect storage; 148 SkRect storage;
149 149
150 for (;;) { 150 for (;;) {
151 if (!view->isVisible()) { 151 if (!view->isVisible()) {
152 return; 152 return;
153 } 153 }
154 if (view->isClipToBounds()) { 154 if (view->isClipToBounds()) {
155 SkRect bounds; 155 SkRect bounds;
156 view->getLocalBounds(&bounds); 156 view->getLocalBounds(&bounds);
157 if (rect && !bounds.intersect(*rect)) { 157 if (rect && !bounds.intersect(*rect)) {
158 return; 158 return;
159 } 159 }
160 storage = bounds; 160 storage = bounds;
161 rect = &storage; 161 rect = &storage;
162 } 162 }
163 if (view->handleInval(rect)) { 163 if (view->handleInval(rect)) {
164 return; 164 return;
165 } 165 }
166 166
167 SkView* parent = view->fParent; 167 SkView* parent = view->fParent;
168 if (parent == NULL) { 168 if (parent == nullptr) {
169 return; 169 return;
170 } 170 }
171 171
172 if (rect) { 172 if (rect) {
173 rect->offset(view->fLoc.fX, view->fLoc.fY); 173 rect->offset(view->fLoc.fX, view->fLoc.fY);
174 } 174 }
175 view = parent; 175 view = parent;
176 } 176 }
177 } 177 }
178 178
179 //////////////////////////////////////////////////////////////////////////// 179 ////////////////////////////////////////////////////////////////////////////
180 180
181 bool SkView::setFocusView(SkView* fv) 181 bool SkView::setFocusView(SkView* fv)
182 { 182 {
183 SkView* view = this; 183 SkView* view = this;
184 184
185 do { 185 do {
186 if (view->onSetFocusView(fv)) 186 if (view->onSetFocusView(fv))
187 return true; 187 return true;
188 } while ((view = view->fParent) != NULL); 188 } while ((view = view->fParent) != nullptr);
189 return false; 189 return false;
190 } 190 }
191 191
192 SkView* SkView::getFocusView() const 192 SkView* SkView::getFocusView() const
193 { 193 {
194 SkView* focus = NULL; 194 SkView* focus = nullptr;
195 const SkView* view = this; 195 const SkView* view = this;
196 do { 196 do {
197 if (view->onGetFocusView(&focus)) 197 if (view->onGetFocusView(&focus))
198 break; 198 break;
199 } while ((view = view->fParent) != NULL); 199 } while ((view = view->fParent) != nullptr);
200 return focus; 200 return focus;
201 } 201 }
202 202
203 bool SkView::hasFocus() const 203 bool SkView::hasFocus() const
204 { 204 {
205 return this == this->getFocusView(); 205 return this == this->getFocusView();
206 } 206 }
207 207
208 bool SkView::acceptFocus() 208 bool SkView::acceptFocus()
209 { 209 {
210 return this->isFocusable() && this->setFocusView(this); 210 return this->isFocusable() && this->setFocusView(this);
211 } 211 }
212 212
213 /* 213 /*
214 Try to give focus to this view, or its children 214 Try to give focus to this view, or its children
215 */ 215 */
216 SkView* SkView::acceptFocus(FocusDirection dir) 216 SkView* SkView::acceptFocus(FocusDirection dir)
217 { 217 {
218 if (dir == kNext_FocusDirection) 218 if (dir == kNext_FocusDirection)
219 { 219 {
220 if (this->acceptFocus()) 220 if (this->acceptFocus())
221 return this; 221 return this;
222 222
223 B2FIter iter(this); 223 B2FIter iter(this);
224 SkView* child, *focus; 224 SkView* child, *focus;
225 while ((child = iter.next()) != NULL) 225 while ((child = iter.next()) != nullptr)
226 if ((focus = child->acceptFocus(dir)) != NULL) 226 if ((focus = child->acceptFocus(dir)) != nullptr)
227 return focus; 227 return focus;
228 } 228 }
229 else // prev 229 else // prev
230 { 230 {
231 F2BIter iter(this); 231 F2BIter iter(this);
232 SkView* child, *focus; 232 SkView* child, *focus;
233 while ((child = iter.next()) != NULL) 233 while ((child = iter.next()) != nullptr)
234 if ((focus = child->acceptFocus(dir)) != NULL) 234 if ((focus = child->acceptFocus(dir)) != nullptr)
235 return focus; 235 return focus;
236 236
237 if (this->acceptFocus()) 237 if (this->acceptFocus())
238 return this; 238 return this;
239 } 239 }
240 240
241 return NULL; 241 return nullptr;
242 } 242 }
243 243
244 SkView* SkView::moveFocus(FocusDirection dir) 244 SkView* SkView::moveFocus(FocusDirection dir)
245 { 245 {
246 SkView* focus = this->getFocusView(); 246 SkView* focus = this->getFocusView();
247 247
248 if (focus == NULL) 248 if (focus == nullptr)
249 { // start with the root 249 { // start with the root
250 focus = this; 250 focus = this;
251 while (focus->fParent) 251 while (focus->fParent)
252 focus = focus->fParent; 252 focus = focus->fParent;
253 } 253 }
254 254
255 SkView* child, *parent; 255 SkView* child, *parent;
256 256
257 if (dir == kNext_FocusDirection) 257 if (dir == kNext_FocusDirection)
258 { 258 {
259 parent = focus; 259 parent = focus;
260 child = focus->fFirstChild; 260 child = focus->fFirstChild;
261 if (child) 261 if (child)
262 goto FIRST_CHILD; 262 goto FIRST_CHILD;
263 else 263 else
264 goto NEXT_SIB; 264 goto NEXT_SIB;
265 265
266 do { 266 do {
267 while (child != parent->fFirstChild) 267 while (child != parent->fFirstChild)
268 { 268 {
269 FIRST_CHILD: 269 FIRST_CHILD:
270 if ((focus = child->acceptFocus(dir)) != NULL) 270 if ((focus = child->acceptFocus(dir)) != nullptr)
271 return focus; 271 return focus;
272 child = child->fNextSibling; 272 child = child->fNextSibling;
273 } 273 }
274 NEXT_SIB: 274 NEXT_SIB:
275 child = parent->fNextSibling; 275 child = parent->fNextSibling;
276 parent = parent->fParent; 276 parent = parent->fParent;
277 } while (parent != NULL); 277 } while (parent != nullptr);
278 } 278 }
279 else // prevfocus 279 else // prevfocus
280 { 280 {
281 parent = focus->fParent; 281 parent = focus->fParent;
282 if (parent == NULL) // we're the root 282 if (parent == nullptr) // we're the root
283 return focus->acceptFocus(dir); 283 return focus->acceptFocus(dir);
284 else 284 else
285 { 285 {
286 child = focus; 286 child = focus;
287 while (parent) 287 while (parent)
288 { 288 {
289 while (child != parent->fFirstChild) 289 while (child != parent->fFirstChild)
290 { 290 {
291 child = child->fPrevSibling; 291 child = child->fPrevSibling;
292 if ((focus = child->acceptFocus(dir)) != NULL) 292 if ((focus = child->acceptFocus(dir)) != nullptr)
293 return focus; 293 return focus;
294 } 294 }
295 if (parent->acceptFocus()) 295 if (parent->acceptFocus())
296 return parent; 296 return parent;
297 297
298 child = parent; 298 child = parent;
299 parent = parent->fParent; 299 parent = parent->fParent;
300 } 300 }
301 } 301 }
302 } 302 }
303 return NULL; 303 return nullptr;
304 } 304 }
305 305
306 void SkView::onFocusChange(bool gainFocusP) 306 void SkView::onFocusChange(bool gainFocusP)
307 { 307 {
308 this->inval(NULL); 308 this->inval(nullptr);
309 } 309 }
310 310
311 //////////////////////////////////////////////////////////////////////////// 311 ////////////////////////////////////////////////////////////////////////////
312 312
313 SkView::Click::Click(SkView* target) 313 SkView::Click::Click(SkView* target)
314 { 314 {
315 SkASSERT(target); 315 SkASSERT(target);
316 fTargetID = target->getSinkID(); 316 fTargetID = target->getSinkID();
317 fType = NULL; 317 fType = nullptr;
318 fWeOwnTheType = false; 318 fWeOwnTheType = false;
319 fOwner = NULL; 319 fOwner = nullptr;
320 } 320 }
321 321
322 SkView::Click::~Click() 322 SkView::Click::~Click()
323 { 323 {
324 this->resetType(); 324 this->resetType();
325 } 325 }
326 326
327 void SkView::Click::resetType() 327 void SkView::Click::resetType()
328 { 328 {
329 if (fWeOwnTheType) 329 if (fWeOwnTheType)
330 { 330 {
331 sk_free(fType); 331 sk_free(fType);
332 fWeOwnTheType = false; 332 fWeOwnTheType = false;
333 } 333 }
334 fType = NULL; 334 fType = nullptr;
335 } 335 }
336 336
337 bool SkView::Click::isType(const char type[]) const 337 bool SkView::Click::isType(const char type[]) const
338 { 338 {
339 const char* t = fType; 339 const char* t = fType;
340 340
341 if (type == t) 341 if (type == t)
342 return true; 342 return true;
343 343
344 if (type == NULL) 344 if (type == nullptr)
345 type = ""; 345 type = "";
346 if (t == NULL) 346 if (t == nullptr)
347 t = ""; 347 t = "";
348 return !strcmp(t, type); 348 return !strcmp(t, type);
349 } 349 }
350 350
351 void SkView::Click::setType(const char type[]) 351 void SkView::Click::setType(const char type[])
352 { 352 {
353 this->resetType(); 353 this->resetType();
354 fType = (char*)type; 354 fType = (char*)type;
355 } 355 }
356 356
357 void SkView::Click::copyType(const char type[]) 357 void SkView::Click::copyType(const char type[])
358 { 358 {
359 if (fType != type) 359 if (fType != type)
360 { 360 {
361 this->resetType(); 361 this->resetType();
362 if (type) 362 if (type)
363 { 363 {
364 size_t len = strlen(type) + 1; 364 size_t len = strlen(type) + 1;
365 fType = (char*)sk_malloc_throw(len); 365 fType = (char*)sk_malloc_throw(len);
366 memcpy(fType, type, len); 366 memcpy(fType, type, len);
367 fWeOwnTheType = true; 367 fWeOwnTheType = true;
368 } 368 }
369 } 369 }
370 } 370 }
371 371
372 SkView::Click* SkView::findClickHandler(SkScalar x, SkScalar y, unsigned modi) { 372 SkView::Click* SkView::findClickHandler(SkScalar x, SkScalar y, unsigned modi) {
373 if (x < 0 || y < 0 || x >= fWidth || y >= fHeight) { 373 if (x < 0 || y < 0 || x >= fWidth || y >= fHeight) {
374 return NULL; 374 return nullptr;
375 } 375 }
376 376
377 if (this->onSendClickToChildren(x, y, modi)) { 377 if (this->onSendClickToChildren(x, y, modi)) {
378 F2BIter iter(this); 378 F2BIter iter(this);
379 SkView* child; 379 SkView* child;
380 380
381 while ((child = iter.next()) != NULL) 381 while ((child = iter.next()) != nullptr)
382 { 382 {
383 SkPoint p; 383 SkPoint p;
384 if (!child->globalToLocal(x, y, &p)) { 384 if (!child->globalToLocal(x, y, &p)) {
385 continue; 385 continue;
386 } 386 }
387 387
388 Click* click = child->findClickHandler(p.fX, p.fY, modi); 388 Click* click = child->findClickHandler(p.fX, p.fY, modi);
389 389
390 if (click) { 390 if (click) {
391 return click; 391 return click;
392 } 392 }
393 } 393 }
394 } 394 }
395 395
396 return this->onFindClickHandler(x, y, modi); 396 return this->onFindClickHandler(x, y, modi);
397 } 397 }
398 398
399 void SkView::DoClickDown(Click* click, int x, int y, unsigned modi) 399 void SkView::DoClickDown(Click* click, int x, int y, unsigned modi)
400 { 400 {
401 SkASSERT(click); 401 SkASSERT(click);
402 402
403 SkView* target = (SkView*)SkEventSink::FindSink(click->fTargetID); 403 SkView* target = (SkView*)SkEventSink::FindSink(click->fTargetID);
404 if (NULL == target) { 404 if (nullptr == target) {
405 return; 405 return;
406 } 406 }
407 407
408 click->fIOrig.set(x, y); 408 click->fIOrig.set(x, y);
409 click->fICurr = click->fIPrev = click->fIOrig; 409 click->fICurr = click->fIPrev = click->fIOrig;
410 410
411 click->fOrig.iset(x, y); 411 click->fOrig.iset(x, y);
412 if (!target->globalToLocal(&click->fOrig)) { 412 if (!target->globalToLocal(&click->fOrig)) {
413 // no history to let us recover from this failure 413 // no history to let us recover from this failure
414 return; 414 return;
415 } 415 }
416 click->fPrev = click->fCurr = click->fOrig; 416 click->fPrev = click->fCurr = click->fOrig;
417 417
418 click->fState = Click::kDown_State; 418 click->fState = Click::kDown_State;
419 click->fModifierKeys = modi; 419 click->fModifierKeys = modi;
420 target->onClick(click); 420 target->onClick(click);
421 } 421 }
422 422
423 void SkView::DoClickMoved(Click* click, int x, int y, unsigned modi) 423 void SkView::DoClickMoved(Click* click, int x, int y, unsigned modi)
424 { 424 {
425 SkASSERT(click); 425 SkASSERT(click);
426 426
427 SkView* target = (SkView*)SkEventSink::FindSink(click->fTargetID); 427 SkView* target = (SkView*)SkEventSink::FindSink(click->fTargetID);
428 if (NULL == target) { 428 if (nullptr == target) {
429 return; 429 return;
430 } 430 }
431 431
432 click->fIPrev = click->fICurr; 432 click->fIPrev = click->fICurr;
433 click->fICurr.set(x, y); 433 click->fICurr.set(x, y);
434 434
435 click->fPrev = click->fCurr; 435 click->fPrev = click->fCurr;
436 click->fCurr.iset(x, y); 436 click->fCurr.iset(x, y);
437 if (!target->globalToLocal(&click->fCurr)) { 437 if (!target->globalToLocal(&click->fCurr)) {
438 // on failure pretend the mouse didn't move 438 // on failure pretend the mouse didn't move
439 click->fCurr = click->fPrev; 439 click->fCurr = click->fPrev;
440 } 440 }
441 441
442 click->fState = Click::kMoved_State; 442 click->fState = Click::kMoved_State;
443 click->fModifierKeys = modi; 443 click->fModifierKeys = modi;
444 target->onClick(click); 444 target->onClick(click);
445 } 445 }
446 446
447 void SkView::DoClickUp(Click* click, int x, int y, unsigned modi) 447 void SkView::DoClickUp(Click* click, int x, int y, unsigned modi)
448 { 448 {
449 SkASSERT(click); 449 SkASSERT(click);
450 450
451 SkView* target = (SkView*)SkEventSink::FindSink(click->fTargetID); 451 SkView* target = (SkView*)SkEventSink::FindSink(click->fTargetID);
452 if (NULL == target) { 452 if (nullptr == target) {
453 return; 453 return;
454 } 454 }
455 455
456 click->fIPrev = click->fICurr; 456 click->fIPrev = click->fICurr;
457 click->fICurr.set(x, y); 457 click->fICurr.set(x, y);
458 458
459 click->fPrev = click->fCurr; 459 click->fPrev = click->fCurr;
460 click->fCurr.iset(x, y); 460 click->fCurr.iset(x, y);
461 if (!target->globalToLocal(&click->fCurr)) { 461 if (!target->globalToLocal(&click->fCurr)) {
462 // on failure pretend the mouse didn't move 462 // on failure pretend the mouse didn't move
(...skipping 23 matching lines...) Expand all
486 } 486 }
487 } 487 }
488 488
489 void SkView::onSizeChange() {} 489 void SkView::onSizeChange() {}
490 490
491 bool SkView::onSendClickToChildren(SkScalar x, SkScalar y, unsigned modi) { 491 bool SkView::onSendClickToChildren(SkScalar x, SkScalar y, unsigned modi) {
492 return true; 492 return true;
493 } 493 }
494 494
495 SkView::Click* SkView::onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) { 495 SkView::Click* SkView::onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) {
496 return NULL; 496 return nullptr;
497 } 497 }
498 498
499 bool SkView::onClick(Click*) { 499 bool SkView::onClick(Click*) {
500 return false; 500 return false;
501 } 501 }
502 502
503 bool SkView::handleInval(const SkRect*) { 503 bool SkView::handleInval(const SkRect*) {
504 return false; 504 return false;
505 } 505 }
506 506
507 ////////////////////////////////////////////////////////////////////// 507 //////////////////////////////////////////////////////////////////////
508 508
509 void SkView::getLocalBounds(SkRect* bounds) const { 509 void SkView::getLocalBounds(SkRect* bounds) const {
510 if (bounds) { 510 if (bounds) {
511 bounds->set(0, 0, fWidth, fHeight); 511 bounds->set(0, 0, fWidth, fHeight);
512 } 512 }
513 } 513 }
514 514
515 ////////////////////////////////////////////////////////////////////// 515 //////////////////////////////////////////////////////////////////////
516 ////////////////////////////////////////////////////////////////////// 516 //////////////////////////////////////////////////////////////////////
517 517
518 void SkView::detachFromParent_NoLayout() { 518 void SkView::detachFromParent_NoLayout() {
519 this->validate(); 519 this->validate();
520 if (fParent == NULL) { 520 if (fParent == nullptr) {
521 return; 521 return;
522 } 522 }
523 523
524 if (fContainsFocus) { 524 if (fContainsFocus) {
525 (void)this->setFocusView(NULL); 525 (void)this->setFocusView(nullptr);
526 } 526 }
527 527
528 this->inval(NULL); 528 this->inval(nullptr);
529 529
530 SkView* next = NULL; 530 SkView* next = nullptr;
531 531
532 if (fNextSibling != this) { // do we have any siblings 532 if (fNextSibling != this) { // do we have any siblings
533 fNextSibling->fPrevSibling = fPrevSibling; 533 fNextSibling->fPrevSibling = fPrevSibling;
534 fPrevSibling->fNextSibling = fNextSibling; 534 fPrevSibling->fNextSibling = fNextSibling;
535 next = fNextSibling; 535 next = fNextSibling;
536 } 536 }
537 537
538 if (fParent->fFirstChild == this) { 538 if (fParent->fFirstChild == this) {
539 fParent->fFirstChild = next; 539 fParent->fFirstChild = next;
540 } 540 }
541 541
542 fParent = fNextSibling = fPrevSibling = NULL; 542 fParent = fNextSibling = fPrevSibling = nullptr;
543 543
544 this->validate(); 544 this->validate();
545 this->unref(); 545 this->unref();
546 } 546 }
547 547
548 void SkView::detachFromParent() { 548 void SkView::detachFromParent() {
549 this->validate(); 549 this->validate();
550 SkView* parent = fParent; 550 SkView* parent = fParent;
551 551
552 if (parent) { 552 if (parent) {
553 this->detachFromParent_NoLayout(); 553 this->detachFromParent_NoLayout();
554 parent->invokeLayout(); 554 parent->invokeLayout();
555 } 555 }
556 } 556 }
557 557
558 SkView* SkView::attachChildToBack(SkView* child) { 558 SkView* SkView::attachChildToBack(SkView* child) {
559 this->validate(); 559 this->validate();
560 SkASSERT(child != this); 560 SkASSERT(child != this);
561 561
562 if (child == NULL || fFirstChild == child) 562 if (child == nullptr || fFirstChild == child)
563 goto DONE; 563 goto DONE;
564 564
565 child->ref(); 565 child->ref();
566 child->detachFromParent_NoLayout(); 566 child->detachFromParent_NoLayout();
567 567
568 if (fFirstChild == NULL) { 568 if (fFirstChild == nullptr) {
569 child->fNextSibling = child; 569 child->fNextSibling = child;
570 child->fPrevSibling = child; 570 child->fPrevSibling = child;
571 } else { 571 } else {
572 child->fNextSibling = fFirstChild; 572 child->fNextSibling = fFirstChild;
573 child->fPrevSibling = fFirstChild->fPrevSibling; 573 child->fPrevSibling = fFirstChild->fPrevSibling;
574 fFirstChild->fPrevSibling->fNextSibling = child; 574 fFirstChild->fPrevSibling->fNextSibling = child;
575 fFirstChild->fPrevSibling = child; 575 fFirstChild->fPrevSibling = child;
576 } 576 }
577 577
578 fFirstChild = child; 578 fFirstChild = child;
579 child->fParent = this; 579 child->fParent = this;
580 child->inval(NULL); 580 child->inval(nullptr);
581 581
582 this->validate(); 582 this->validate();
583 this->invokeLayout(); 583 this->invokeLayout();
584 DONE: 584 DONE:
585 return child; 585 return child;
586 } 586 }
587 587
588 SkView* SkView::attachChildToFront(SkView* child) { 588 SkView* SkView::attachChildToFront(SkView* child) {
589 this->validate(); 589 this->validate();
590 SkASSERT(child != this); 590 SkASSERT(child != this);
591 591
592 if (child == NULL || (fFirstChild && fFirstChild->fPrevSibling == child)) 592 if (child == nullptr || (fFirstChild && fFirstChild->fPrevSibling == child))
593 goto DONE; 593 goto DONE;
594 594
595 child->ref(); 595 child->ref();
596 child->detachFromParent_NoLayout(); 596 child->detachFromParent_NoLayout();
597 597
598 if (fFirstChild == NULL) { 598 if (fFirstChild == nullptr) {
599 fFirstChild = child; 599 fFirstChild = child;
600 child->fNextSibling = child; 600 child->fNextSibling = child;
601 child->fPrevSibling = child; 601 child->fPrevSibling = child;
602 } else { 602 } else {
603 child->fNextSibling = fFirstChild; 603 child->fNextSibling = fFirstChild;
604 child->fPrevSibling = fFirstChild->fPrevSibling; 604 child->fPrevSibling = fFirstChild->fPrevSibling;
605 fFirstChild->fPrevSibling->fNextSibling = child; 605 fFirstChild->fPrevSibling->fNextSibling = child;
606 fFirstChild->fPrevSibling = child; 606 fFirstChild->fPrevSibling = child;
607 } 607 }
608 608
609 child->fParent = this; 609 child->fParent = this;
610 child->inval(NULL); 610 child->inval(nullptr);
611 611
612 this->validate(); 612 this->validate();
613 this->invokeLayout(); 613 this->invokeLayout();
614 DONE: 614 DONE:
615 return child; 615 return child;
616 } 616 }
617 617
618 void SkView::detachAllChildren() { 618 void SkView::detachAllChildren() {
619 this->validate(); 619 this->validate();
620 while (fFirstChild) 620 while (fFirstChild)
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 692
693 void SkView::onPostInflate(const SkTDict<SkView*>&) { 693 void SkView::onPostInflate(const SkTDict<SkView*>&) {
694 // override in subclass as needed 694 // override in subclass as needed
695 } 695 }
696 696
697 void SkView::postInflate(const SkTDict<SkView*>& dict) { 697 void SkView::postInflate(const SkTDict<SkView*>& dict) {
698 this->onPostInflate(dict); 698 this->onPostInflate(dict);
699 699
700 B2FIter iter(this); 700 B2FIter iter(this);
701 SkView* child; 701 SkView* child;
702 while ((child = iter.next()) != NULL) 702 while ((child = iter.next()) != nullptr)
703 child->postInflate(dict); 703 child->postInflate(dict);
704 } 704 }
705 705
706 ////////////////////////////////////////////////////////////////// 706 //////////////////////////////////////////////////////////////////
707 707
708 SkView* SkView::sendEventToParents(const SkEvent& evt) { 708 SkView* SkView::sendEventToParents(const SkEvent& evt) {
709 SkView* parent = fParent; 709 SkView* parent = fParent;
710 710
711 while (parent) { 711 while (parent) {
712 if (parent->doEvent(evt)) { 712 if (parent->doEvent(evt)) {
713 return parent; 713 return parent;
714 } 714 }
715 parent = parent->fParent; 715 parent = parent->fParent;
716 } 716 }
717 return NULL; 717 return nullptr;
718 } 718 }
719 719
720 SkView* SkView::sendQueryToParents(SkEvent* evt) { 720 SkView* SkView::sendQueryToParents(SkEvent* evt) {
721 SkView* parent = fParent; 721 SkView* parent = fParent;
722 722
723 while (parent) { 723 while (parent) {
724 if (parent->doQuery(evt)) { 724 if (parent->doQuery(evt)) {
725 return parent; 725 return parent;
726 } 726 }
727 parent = parent->fParent; 727 parent = parent->fParent;
728 } 728 }
729 return NULL; 729 return nullptr;
730 } 730 }
731 731
732 ////////////////////////////////////////////////////////////////// 732 //////////////////////////////////////////////////////////////////
733 ////////////////////////////////////////////////////////////////// 733 //////////////////////////////////////////////////////////////////
734 734
735 SkView::F2BIter::F2BIter(const SkView* parent) { 735 SkView::F2BIter::F2BIter(const SkView* parent) {
736 fFirstChild = parent ? parent->fFirstChild : NULL; 736 fFirstChild = parent ? parent->fFirstChild : nullptr;
737 fChild = fFirstChild ? fFirstChild->fPrevSibling : NULL; 737 fChild = fFirstChild ? fFirstChild->fPrevSibling : nullptr;
738 } 738 }
739 739
740 SkView* SkView::F2BIter::next() { 740 SkView* SkView::F2BIter::next() {
741 SkView* curr = fChild; 741 SkView* curr = fChild;
742 742
743 if (fChild) { 743 if (fChild) {
744 if (fChild == fFirstChild) { 744 if (fChild == fFirstChild) {
745 fChild = NULL; 745 fChild = nullptr;
746 } else { 746 } else {
747 fChild = fChild->fPrevSibling; 747 fChild = fChild->fPrevSibling;
748 } 748 }
749 } 749 }
750 return curr; 750 return curr;
751 } 751 }
752 752
753 SkView::B2FIter::B2FIter(const SkView* parent) { 753 SkView::B2FIter::B2FIter(const SkView* parent) {
754 fFirstChild = parent ? parent->fFirstChild : NULL; 754 fFirstChild = parent ? parent->fFirstChild : nullptr;
755 fChild = fFirstChild; 755 fChild = fFirstChild;
756 } 756 }
757 757
758 SkView* SkView::B2FIter::next() { 758 SkView* SkView::B2FIter::next() {
759 SkView* curr = fChild; 759 SkView* curr = fChild;
760 760
761 if (fChild) { 761 if (fChild) {
762 SkView* next = fChild->fNextSibling; 762 SkView* next = fChild->fNextSibling;
763 if (next == fFirstChild) 763 if (next == fFirstChild)
764 next = NULL; 764 next = nullptr;
765 fChild = next; 765 fChild = next;
766 } 766 }
767 return curr; 767 return curr;
768 } 768 }
769 769
770 ////////////////////////////////////////////////////////////////// 770 //////////////////////////////////////////////////////////////////
771 ////////////////////////////////////////////////////////////////// 771 //////////////////////////////////////////////////////////////////
772 772
773 #ifdef SK_DEBUG 773 #ifdef SK_DEBUG
774 774
775 void SkView::validate() const { 775 void SkView::validate() const {
776 // SkASSERT(this->getRefCnt() > 0 && this->getRefCnt() < 100); 776 // SkASSERT(this->getRefCnt() > 0 && this->getRefCnt() < 100);
777 if (fParent) { 777 if (fParent) {
778 SkASSERT(fNextSibling); 778 SkASSERT(fNextSibling);
779 SkASSERT(fPrevSibling); 779 SkASSERT(fPrevSibling);
780 } else { 780 } else {
781 bool nextNull = NULL == fNextSibling; 781 bool nextNull = nullptr == fNextSibling;
782 bool prevNull = NULL == fNextSibling; 782 bool prevNull = nullptr == fNextSibling;
783 SkASSERT(nextNull == prevNull); 783 SkASSERT(nextNull == prevNull);
784 } 784 }
785 } 785 }
786 786
787 static inline void show_if_nonzero(const char name[], SkScalar value) 787 static inline void show_if_nonzero(const char name[], SkScalar value)
788 { 788 {
789 if (value) 789 if (value)
790 SkDebugf("%s=\"%g\"", name, value/65536.); 790 SkDebugf("%s=\"%g\"", name, value/65536.);
791 } 791 }
792 792
(...skipping 12 matching lines...) Expand all
805 show_if_nonzero(" y", view->locY()); 805 show_if_nonzero(" y", view->locY());
806 show_if_nonzero(" width", view->width()); 806 show_if_nonzero(" width", view->width());
807 show_if_nonzero(" height", view->height()); 807 show_if_nonzero(" height", view->height());
808 808
809 if (recurse) 809 if (recurse)
810 { 810 {
811 SkView::B2FIter iter(view); 811 SkView::B2FIter iter(view);
812 SkView* child; 812 SkView* child;
813 bool noChildren = true; 813 bool noChildren = true;
814 814
815 while ((child = iter.next()) != NULL) 815 while ((child = iter.next()) != nullptr)
816 { 816 {
817 if (noChildren) 817 if (noChildren)
818 SkDebugf(">\n"); 818 SkDebugf(">\n");
819 noChildren = false; 819 noChildren = false;
820 dumpview(child, level + 1, true); 820 dumpview(child, level + 1, true);
821 } 821 }
822 822
823 if (!noChildren) 823 if (!noChildren)
824 { 824 {
825 tab(level); 825 tab(level);
826 SkDebugf("</view>\n"); 826 SkDebugf("</view>\n");
827 } 827 }
828 else 828 else
829 goto ONELINER; 829 goto ONELINER;
830 } 830 }
831 else 831 else
832 { 832 {
833 ONELINER: 833 ONELINER:
834 SkDebugf(" />\n"); 834 SkDebugf(" />\n");
835 } 835 }
836 } 836 }
837 837
838 void SkView::dump(bool recurse) const 838 void SkView::dump(bool recurse) const
839 { 839 {
840 dumpview(this, 0, recurse); 840 dumpview(this, 0, recurse);
841 } 841 }
842 842
843 #endif 843 #endif
OLDNEW
« no previous file with comments | « src/views/SkTagList.cpp ('k') | src/views/SkViewInflate.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698