Home | History | Annotate | Download | only in style
      1 /*
      2  * Copyright (C) 2000 Lars Knoll (knoll (at) kde.org)
      3  *           (C) 2000 Antti Koivisto (koivisto (at) kde.org)
      4  *           (C) 2000 Dirk Mueller (mueller (at) kde.org)
      5  * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
      6  *
      7  * This library is free software; you can redistribute it and/or
      8  * modify it under the terms of the GNU Library General Public
      9  * License as published by the Free Software Foundation; either
     10  * version 2 of the License, or (at your option) any later version.
     11  *
     12  * This library is distributed in the hope that it will be useful,
     13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     15  * Library General Public License for more details.
     16  *
     17  * You should have received a copy of the GNU Library General Public License
     18  * along with this library; see the file COPYING.LIB.  If not, write to
     19  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     20  * Boston, MA 02110-1301, USA.
     21  *
     22  */
     23 
     24 #include "config.h"
     25 #include "StyleGeneratedImage.h"
     26 
     27 #include "CSSImageGeneratorValue.h"
     28 #include "RenderObject.h"
     29 
     30 namespace WebCore {
     31 
     32 PassRefPtr<CSSValue> StyleGeneratedImage::cssValue() const
     33 {
     34     return m_generator;
     35 }
     36 
     37 IntSize StyleGeneratedImage::imageSize(const RenderObject* renderer, float multiplier) const
     38 {
     39     if (m_fixedSize) {
     40         IntSize fixedSize = m_generator->fixedSize(renderer);
     41         if (multiplier == 1.0f)
     42             return fixedSize;
     43 
     44         int width = fixedSize.width() * multiplier;
     45         int height = fixedSize.height() * multiplier;
     46 
     47         // Don't let images that have a width/height >= 1 shrink below 1 when zoomed.
     48         if (fixedSize.width() > 0)
     49             width = max(1, width);
     50 
     51         if (fixedSize.height() > 0)
     52             height = max(1, height);
     53 
     54         return IntSize(width, height);
     55     }
     56 
     57     return m_containerSize;
     58 }
     59 
     60 void StyleGeneratedImage::setImageContainerSize(const IntSize& size)
     61 {
     62     m_containerSize = size;
     63 }
     64 
     65 void StyleGeneratedImage::addClient(RenderObject* renderer)
     66 {
     67     m_generator->addClient(renderer, IntSize());
     68 }
     69 
     70 void StyleGeneratedImage::removeClient(RenderObject* renderer)
     71 {
     72     m_generator->removeClient(renderer);
     73 }
     74 
     75 PassRefPtr<Image> StyleGeneratedImage::image(RenderObject* renderer, const IntSize& size) const
     76 {
     77     return m_generator->image(renderer, size);
     78 }
     79 
     80 }
     81