OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Apple Inc. All rights | 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Apple Inc. All rights |
5 * reserved. | 5 * reserved. |
6 * Copyright (C) 2010 Google Inc. All rights reserved. | 6 * Copyright (C) 2010 Google Inc. All rights reserved. |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 selectSourceURL(ImageLoader::UpdateSizeChanged); | 134 selectSourceURL(ImageLoader::UpdateSizeChanged); |
135 } | 135 } |
136 | 136 |
137 HTMLImageElement* HTMLImageElement::createForJSConstructor(Document& document) { | 137 HTMLImageElement* HTMLImageElement::createForJSConstructor(Document& document) { |
138 HTMLImageElement* image = new HTMLImageElement(document); | 138 HTMLImageElement* image = new HTMLImageElement(document); |
139 image->m_elementCreatedByParser = false; | 139 image->m_elementCreatedByParser = false; |
140 return image; | 140 return image; |
141 } | 141 } |
142 | 142 |
143 HTMLImageElement* HTMLImageElement::createForJSConstructor(Document& document, | 143 HTMLImageElement* HTMLImageElement::createForJSConstructor(Document& document, |
144 int width) { | 144 unsigned width) { |
145 HTMLImageElement* image = new HTMLImageElement(document); | 145 HTMLImageElement* image = new HTMLImageElement(document); |
146 image->setWidth(width); | 146 image->setWidth(width); |
147 image->m_elementCreatedByParser = false; | 147 image->m_elementCreatedByParser = false; |
148 return image; | 148 return image; |
149 } | 149 } |
150 | 150 |
151 HTMLImageElement* HTMLImageElement::createForJSConstructor(Document& document, | 151 HTMLImageElement* HTMLImageElement::createForJSConstructor(Document& document, |
152 int width, | 152 unsigned width, |
153 int height) { | 153 unsigned height) { |
154 HTMLImageElement* image = new HTMLImageElement(document); | 154 HTMLImageElement* image = new HTMLImageElement(document); |
155 image->setWidth(width); | 155 image->setWidth(width); |
156 image->setHeight(height); | 156 image->setHeight(height); |
157 image->m_elementCreatedByParser = false; | 157 image->m_elementCreatedByParser = false; |
158 return image; | 158 return image; |
159 } | 159 } |
160 | 160 |
161 bool HTMLImageElement::isPresentationAttribute( | 161 bool HTMLImageElement::isPresentationAttribute( |
162 const QualifiedName& name) const { | 162 const QualifiedName& name) const { |
163 if (name == widthAttr || name == heightAttr || name == borderAttr || | 163 if (name == widthAttr || name == heightAttr || name == borderAttr || |
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 resetFormOwner(); | 419 resetFormOwner(); |
420 if (m_listener) { | 420 if (m_listener) { |
421 document().mediaQueryMatcher().removeViewportListener(m_listener); | 421 document().mediaQueryMatcher().removeViewportListener(m_listener); |
422 Node* parent = parentNode(); | 422 Node* parent = parentNode(); |
423 if (parent && isHTMLPictureElement(*parent)) | 423 if (parent && isHTMLPictureElement(*parent)) |
424 toHTMLPictureElement(parent)->removeListenerFromSourceChildren(); | 424 toHTMLPictureElement(parent)->removeListenerFromSourceChildren(); |
425 } | 425 } |
426 HTMLElement::removedFrom(insertionPoint); | 426 HTMLElement::removedFrom(insertionPoint); |
427 } | 427 } |
428 | 428 |
429 int HTMLImageElement::width() { | 429 unsigned HTMLImageElement::width() { |
430 if (inActiveDocument()) | 430 if (inActiveDocument()) |
431 document().updateStyleAndLayoutIgnorePendingStylesheets(); | 431 document().updateStyleAndLayoutIgnorePendingStylesheets(); |
432 | 432 |
433 if (!layoutObject()) { | 433 if (!layoutObject()) { |
434 // check the attribute first for an explicit pixel value | 434 // check the attribute first for an explicit pixel value |
435 bool ok; | 435 unsigned width = 0; |
436 int width = getAttribute(widthAttr).toInt(&ok); | 436 if (parseHTMLNonNegativeInteger(getAttribute(widthAttr), width)) |
437 if (ok) | |
438 return width; | 437 return width; |
439 | 438 |
440 // if the image is available, use its width | 439 // if the image is available, use its width |
441 if (imageLoader().image()) | 440 if (imageLoader().image()) { |
442 return imageLoader() | 441 return imageLoader() |
443 .image() | 442 .image() |
444 ->imageSize(LayoutObject::shouldRespectImageOrientation(nullptr), | 443 ->imageSize(LayoutObject::shouldRespectImageOrientation(nullptr), |
445 1.0f) | 444 1.0f) |
446 .width() | 445 .width() |
447 .toInt(); | 446 .toUnsigned(); |
| 447 } |
448 } | 448 } |
449 | 449 |
450 LayoutBox* box = layoutBox(); | 450 LayoutBox* box = layoutBox(); |
451 return box ? adjustForAbsoluteZoom(box->contentBoxRect().pixelSnappedWidth(), | 451 return box ? adjustForAbsoluteZoom(box->contentBoxRect().pixelSnappedWidth(), |
452 box) | 452 box) |
453 : 0; | 453 : 0; |
454 } | 454 } |
455 | 455 |
456 int HTMLImageElement::height() { | 456 unsigned HTMLImageElement::height() { |
457 if (inActiveDocument()) | 457 if (inActiveDocument()) |
458 document().updateStyleAndLayoutIgnorePendingStylesheets(); | 458 document().updateStyleAndLayoutIgnorePendingStylesheets(); |
459 | 459 |
460 if (!layoutObject()) { | 460 if (!layoutObject()) { |
461 // check the attribute first for an explicit pixel value | 461 // check the attribute first for an explicit pixel value |
462 bool ok; | 462 unsigned height = 0; |
463 int height = getAttribute(heightAttr).toInt(&ok); | 463 if (parseHTMLNonNegativeInteger(getAttribute(heightAttr), height)) |
464 if (ok) | |
465 return height; | 464 return height; |
466 | 465 |
467 // if the image is available, use its height | 466 // if the image is available, use its height |
468 if (imageLoader().image()) | 467 if (imageLoader().image()) { |
469 return imageLoader() | 468 return imageLoader() |
470 .image() | 469 .image() |
471 ->imageSize(LayoutObject::shouldRespectImageOrientation(nullptr), | 470 ->imageSize(LayoutObject::shouldRespectImageOrientation(nullptr), |
472 1.0f) | 471 1.0f) |
473 .height() | 472 .height() |
474 .toInt(); | 473 .toUnsigned(); |
| 474 } |
475 } | 475 } |
476 | 476 |
477 LayoutBox* box = layoutBox(); | 477 LayoutBox* box = layoutBox(); |
478 return box ? adjustForAbsoluteZoom(box->contentBoxRect().pixelSnappedHeight(), | 478 return box ? adjustForAbsoluteZoom(box->contentBoxRect().pixelSnappedHeight(), |
479 box) | 479 box) |
480 : 0; | 480 : 0; |
481 } | 481 } |
482 | 482 |
483 int HTMLImageElement::naturalWidth() const { | 483 unsigned HTMLImageElement::naturalWidth() const { |
484 if (!imageLoader().image()) | 484 if (!imageLoader().image()) |
485 return 0; | 485 return 0; |
486 | 486 |
487 return imageLoader() | 487 return imageLoader() |
488 .image() | 488 .image() |
489 ->imageSize(LayoutObject::shouldRespectImageOrientation(layoutObject()), | 489 ->imageSize(LayoutObject::shouldRespectImageOrientation(layoutObject()), |
490 m_imageDevicePixelRatio, | 490 m_imageDevicePixelRatio, |
491 ImageResource::IntrinsicCorrectedToDPR) | 491 ImageResource::IntrinsicCorrectedToDPR) |
492 .width() | 492 .width() |
493 .toInt(); | 493 .toUnsigned(); |
494 } | 494 } |
495 | 495 |
496 int HTMLImageElement::naturalHeight() const { | 496 unsigned HTMLImageElement::naturalHeight() const { |
497 if (!imageLoader().image()) | 497 if (!imageLoader().image()) |
498 return 0; | 498 return 0; |
499 | 499 |
500 return imageLoader() | 500 return imageLoader() |
501 .image() | 501 .image() |
502 ->imageSize(LayoutObject::shouldRespectImageOrientation(layoutObject()), | 502 ->imageSize(LayoutObject::shouldRespectImageOrientation(layoutObject()), |
503 m_imageDevicePixelRatio, | 503 m_imageDevicePixelRatio, |
504 ImageResource::IntrinsicCorrectedToDPR) | 504 ImageResource::IntrinsicCorrectedToDPR) |
505 .height() | 505 .height() |
506 .toInt(); | 506 .toUnsigned(); |
507 } | 507 } |
508 | 508 |
509 const String& HTMLImageElement::currentSrc() const { | 509 const String& HTMLImageElement::currentSrc() const { |
510 // http://www.whatwg.org/specs/web-apps/current-work/multipage/edits.html#dom-
img-currentsrc | 510 // http://www.whatwg.org/specs/web-apps/current-work/multipage/edits.html#dom-
img-currentsrc |
511 // The currentSrc IDL attribute must return the img element's current | 511 // The currentSrc IDL attribute must return the img element's current |
512 // request's current URL. | 512 // request's current URL. |
513 | 513 |
514 // Return the picked URL string in case of load error. | 514 // Return the picked URL string in case of load error. |
515 if (imageLoader().hadError()) | 515 if (imageLoader().hadError()) |
516 return m_bestFitImageURL; | 516 return m_bestFitImageURL; |
(...skipping 20 matching lines...) Expand all Loading... |
537 | 537 |
538 const QualifiedName& HTMLImageElement::subResourceAttributeName() const { | 538 const QualifiedName& HTMLImageElement::subResourceAttributeName() const { |
539 return srcAttr; | 539 return srcAttr; |
540 } | 540 } |
541 | 541 |
542 bool HTMLImageElement::draggable() const { | 542 bool HTMLImageElement::draggable() const { |
543 // Image elements are draggable by default. | 543 // Image elements are draggable by default. |
544 return !equalIgnoringCase(getAttribute(draggableAttr), "false"); | 544 return !equalIgnoringCase(getAttribute(draggableAttr), "false"); |
545 } | 545 } |
546 | 546 |
547 void HTMLImageElement::setHeight(int value) { | 547 void HTMLImageElement::setHeight(unsigned value) { |
548 setIntegralAttribute(heightAttr, value); | 548 setUnsignedIntegralAttribute(heightAttr, value); |
549 } | 549 } |
550 | 550 |
551 KURL HTMLImageElement::src() const { | 551 KURL HTMLImageElement::src() const { |
552 return document().completeURL(getAttribute(srcAttr)); | 552 return document().completeURL(getAttribute(srcAttr)); |
553 } | 553 } |
554 | 554 |
555 void HTMLImageElement::setSrc(const String& value) { | 555 void HTMLImageElement::setSrc(const String& value) { |
556 setAttribute(srcAttr, AtomicString(value)); | 556 setAttribute(srcAttr, AtomicString(value)); |
557 } | 557 } |
558 | 558 |
559 void HTMLImageElement::setWidth(int value) { | 559 void HTMLImageElement::setWidth(unsigned value) { |
560 setIntegralAttribute(widthAttr, value); | 560 setUnsignedIntegralAttribute(widthAttr, value); |
561 } | 561 } |
562 | 562 |
563 int HTMLImageElement::x() const { | 563 int HTMLImageElement::x() const { |
564 document().updateStyleAndLayoutIgnorePendingStylesheets(); | 564 document().updateStyleAndLayoutIgnorePendingStylesheets(); |
565 LayoutObject* r = layoutObject(); | 565 LayoutObject* r = layoutObject(); |
566 if (!r) | 566 if (!r) |
567 return 0; | 567 return 0; |
568 | 568 |
569 // FIXME: This doesn't work correctly with transforms. | 569 // FIXME: This doesn't work correctly with transforms. |
570 FloatPoint absPos = r->localToAbsolute(); | 570 FloatPoint absPos = r->localToAbsolute(); |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
885 ImageResource* image = cachedImage(); | 885 ImageResource* image = cachedImage(); |
886 if (!image) | 886 if (!image) |
887 return IntSize(); | 887 return IntSize(); |
888 LayoutSize lSize = image->imageSize( | 888 LayoutSize lSize = image->imageSize( |
889 LayoutObject::shouldRespectImageOrientation(layoutObject()), 1.0f); | 889 LayoutObject::shouldRespectImageOrientation(layoutObject()), 1.0f); |
890 DCHECK(lSize.fraction().isZero()); | 890 DCHECK(lSize.fraction().isZero()); |
891 return IntSize(lSize.width().toInt(), lSize.height().toInt()); | 891 return IntSize(lSize.width().toInt(), lSize.height().toInt()); |
892 } | 892 } |
893 | 893 |
894 } // namespace blink | 894 } // namespace blink |
OLD | NEW |